S3CLI 是一款通过命令行操作对 S3 进行数据管理的工具,支持丰富的存储空间(bucket)以及对象(object)操作,支持Windows、Linux、Mac平台。
通过本工具,您可以进行以下操作: 存储空间(bucket):创建、删除、查看存储量、查看存储空间列表等。 对象(object):上传、下载、删除、移动、拉列表、计算 etag 等。
另外,本工具提供丰富的批量操作:上传,下载,删除,拷贝(不同存储空间之间),移动(同一存储空间内),数据取回等。
软件版本:1.7.2
运行环境:Windows(x86 32/64位);Linux(x86 32/64位,arm 32/64位);Mac(64位)
下载地址:
1、Windows:us3cli-windows.exe
2、Linux
x86架构:us3cli-linux32;us3cli-linux64
arm架构:us3cli-arm32;us3cli-arm64
3、Mac:us3cli-mac
Linux环境(Linux 64位版本)准备:
1、下载工具至本地。
2、添加可执行权限。
chmod +x us3cli-linux64CopyErrorSuccess3、开始创建配置。
./us3cli-linux64 configCopyErrorSuccess1、下载工具至本地。
2、以管理员身份打开cmd面板,切换到us3cli-windows.exe文件所在路径。
3、执行config命令创建配置。
us3cli-windows.exe configCopyErrorSuccess注意事项:
1、请使用管理员身份打开cmd命令行。
2、下载后请不要直接点击执行us3cli-windows.exe文件,该工具需要使用命令行工具打开执行。
3、如果点击下载无反应,请右键单击复制链接地址,输入到浏览器地址输入框打开。
1.下载工具至本地。
2.添加可执行权限。
chmod +x us3cli-macCopyErrorSuccess3.开始创建配置。
./us3cli-mac config
快速上手:
1、常用配置
命令格式:
us3cli config [--ls][--su <配置名>][--rm <配置名>][--cat <配置名>][--encrypt][--ssl][--proxy [代理地址]] [--accesskey <API/Token公钥>][--secretkey <API/Token私钥>][--endpoint <访问域名>] [--language <ZH/EN]CopyErrorSuccess常用配置创建方式分为两种:交互式配置和一键配置,命令格式相同,使用方式不同
1.1、配置项创建
交互式配置:
使用示例:
#./us3cli config请输入语言(Please enter the language): ZH/EN, 默认为ZH(default is ZH) :ZH请输入当前配置项名称: config1开始创建新配置项:[ config1 ]是否启用配置加密(y or n) ? n请输入API/Token公钥[当前:]: xxxxxxxxxxxxxxxxxxxxxx请输入API/Token私钥[当前:]: xxxxxxxxxxxxxxxxxxxxxx地区列表:No. RegionName Region 0 北京 cn-bj 1 上海二 cn-sh2 2 广州 cn-gd 3 香港 hk 4 洛杉矶 us-ca 5 新加坡 sg 6 雅加达 idn-jakarta 7 台北 tw-tp 8 拉各斯 afr-nigeria 9 圣保罗 bra-saopaulo10 迪拜 uae-dubai 11 法兰克福 ge-fra 12 胡志明市 vn-sng 13 华盛顿 us-ws 14 孟买 ind-mumbai 15 首尔 kr-seoul16 东京 jpn-tky17 曼谷 th-bkk18 华北二 cn-wlcb19 英国 uk-london 请输入region编号: 0内外网列表:No. Network0 外网 1 内网 请选择或输入内外网编号:0您选择的endpoint是:[cn-bj.ufileos.com],[当前:],请输入回车确认或自定义endponit:当前最终配置:ConfigName: config1AccessKey: xxxxxxxxxxxxxxxxxxxxxxSecretKey: xxxxxxxxxxxxxxxxxxxxxxEndpoint: cn-bj.ufileos.com请检查后输入回车确认:是否启用HTTPS (y or n) ? n是否启用代理(y or n):n配置文件 [ config1 ] 已修改是否使用该配置作为默认配置(当前默认配置为:< config >)(y or n)?CopyErrorSuccess
一键配置:
使用示例:
./us3cli config config1 --accesskey TOKEN_13be86********* --secretkey BAtrQO8LYdgve1HS_benbK-MXNTl3********** --endpoint cn-bj.ufileos.com --language ZHCopyErrorSuccess
1.2、配置项管理
#切换默认配置./us3cli config --su config1#删除指定配置(只支持指定配置项名称删除,不支持指定路径)./us3cli config --rm config1#配置项内容查看,包含accesskey、secretkey、endpoint./us3cli config --cat config1#查看当前所有配置项列表,默认配置会标明 "(default)",Authority表示当前配置是Token密钥类型还是API密钥类型(只判断类型,不进行权限验证)./us3cli config --lsCopyErrorSuccess
2、临时配置
临时配置可以通过配置名、配置文件路径、配置项内容使用,具体示例如下:
#1.通过配置名指定临时配置./us3cli ls us3://bucket1 --config config2#2.通过配置文件路径指定临时配置./us3cli ls us3://bucket1 --config ~/go/src/userconfig.yaml#3.通过配置项内容直接指定临时配置./us3cli ls us3://bucket1 --accesskey "xxxxxx" --secretkey "xxxxxx" --endpoint "xxxxxx"CopyErrorSuccess注:当前版本支持自定义配置文件,但只支持与工具自动生成配置文件内容相同的配置文件
自定义配置文件内容如下,具体填写说明见常用命令页config命令介绍
accesskey: "user accesskey"secretkey: "user secretkey"endpoint: "ufile.cn-north-02.ucloud.cn"encrypt: "false"enablessl: "false"proxy: "http://ip:port or https://ip:port"language: "ZH"CopyErrorSuccess
3、创建存储空间
3.1、交互式创建
命令格式:us3cli mb us3://<bucketname> 使用示例:# ./us3cli mb us3://bucketTest请输入要创建bucket的权限类型acl(private/public,默认为private):private 地区列表:No. RegionName Region 0 北京 cn-bj 1 上海二 cn-sh2 2 广州 cn-gd 3 香港 hk 4 洛杉矶 us-ca 5 新加坡 sg 6 雅加达 idn-jakarta 7 台北 tw-tp 8 拉各斯 afr-nigeria 9 圣保罗 bra-saopaulo10 迪拜 uae-dubai 11 法兰克福 ge-fra 12 胡志明市 vn-sng 13 华盛顿 us-ws 14 孟买 ind-mumbai 15 首尔 kr-seoul16 东京 jpn-tky17 曼谷 th-bkk18 华北二 cn-wlcb19 英国 uk-london 请输入要创建bucket地区编号或地区代码(默认为北京:cn-bj):0Region: cn-bj当前账号下项目信息如下:No. ProjectName ProjectId 1 Default org-orcwsj请输入要创建bucket的项目编号:1Number: 1ProjectID: org-orcwsj2020-11-24 17:52:56.973 INFO Make bucket [ bucketTest ] successCopyErrorSuccess
3.2、一键创建
#命令格式:us3cli mb us3://<bucketname> --projectid <projectid> --region <region> --acl <acl> #使用示例:./us3cli mb us3://buckettest --projectid org-test --region cn-bj --acl publicCopyErrorSuccess
4、上传文件或文件夹
4.1、上传单个文件
#命令格式:#普通文件us3cli cp <local filename> us3://<bucketname>/<us3key> #流式文件us3cli rcat us3://<bucketname>/<us3key> #使用示例:#普通上传文件,不指定任何参数./us3cli cp ./test.txt us3://buckettest/test.txt#指定存储类型为IA上传 (不区分大小写)./us3cli cp ./test.txt us3://buckettest/test.txt --storageclass IA#指定并发数,设置并发数为10(文件大于64MB时才会有效果,因为64MB以上大文件才会使用分片上传)./us3cli cp ./test.txt us3://buckettest/test.txt --parallel 10#将本地文件test.txt cat到标准输入,再上传至us3存储空间内cat test.txt | ./us3cli rcat us3://buckettest/test.txt#流式上传并指定失败重试次数为10,设置并发数为10cat test.txt | ./us3cli rcat us3://buckettest/test.txt --retrycount 10 --parallel 10CopyErrorSuccess
4.2、上传文件夹
#命令格式:us3cli cp -r <localdir> us3://<bucketname>/<us3key> #使用示例:#普通上传文件夹./us3cli cp -r ./testdir us3://buckettest/us3dir#上传后缀名为“.txt"的文件./us3cli cp -r ./testdir us3://buckettest/us3dir --include "*txt"#上传文件名不包含test的文件./us3cli cp -r ./testdir us3://buckettest/us3dir --exclude "*test*"#上传文件夹并进行完整性校验./us3cli cp -r ./testdir us3://buckettest/us3dir --checkCopyErrorSuccess
4.3、增量上传文件夹
增量上传文件夹:对比本地文件夹和us3对应的文件夹,忽略已上传的文件,将未上传过的文件上传到us3文件夹内
#命令格式:us3cli sync <localdir> us3://<bucketname>/<us3key> #使用示例:#遍历本地文件夹,以本地缓存为标准进行同步,如果文件修改时间晚于本地缓存保存的时间,或者未保存过,则上传文件,否则跳过./us3cli sync ./testdir us3://buckettest/us3dir#遍历本地文件夹,以本地缓存为标准进行同步,如果文件etag和本地缓存保存的etag不同,则上传文件,否则跳过./us3cli sync ./testdir us3://buckettest/us3dir --ruler etag#遍历本地文件夹,对比本地和us3所有文件,如果文件修改时间晚于us3文件的修改时间,则上传文件,否则跳过#如果存在文件在us3的目录下存在,但在本地不存在,则删除us3中的该文件(该删除操作会默认询问,目前不提供强制删除功能)./us3cli sync ./testdir us3://buckettest/us3dir --mode local#遍历本地文件夹,对比本地和us3所有文件,如果文件etag和us3同一文件的etag不同,则上传文件,否则跳过./us3cli sync ./testdir us3://buckettest/us3dir --mode local --ruler etag#增量上传并指定存储类型为低频类型./us3cli sync ./testdir us3://buckettest/us3dir --storageclass ”IA“#增量上传并指定mimetype./us3cli sync ./testdir us3://buckettest/us3dir --mimetype "mimetype1"CopyErrorSuccess
5、下载文件或文件夹
5.1、下载单个文件
#命令格式:#普通下载us3cli cp us3://<bucketname>/<us3key> <local filename> #流式下载us3cli cat us3://<bucketname>/<us3key> #使用示例:#普通下载单个文件./us3cli cp us3://buckettest/test.txt ./test.txt#下载文件,每个分片大小指定为8M(不区分大小写,并且默认大小为4M,最小值为4M)./us3cli cp us3://buckettest/test.txt ./test.txt --partsize 4M#流式文件下载(文件会写入到标准输入)./us3cli cat us3://buckettest/test.txt#流式下载并指定并发数,重试次数为10./us3cli cat us3://buckettest/test.txt --parallel 10 --retrycount 10CopyErrorSuccess
5.2、下载文件夹
#命令格式:us3cli cp -r us3://<bucketname>/<us3key> <localdir> #使用示例:#普通下载文件夹./us3cli cp -r us3://buckettest/us3dir ./testdir#下载文件夹并指定并发数为20./us3cli cp -r us3://buckettest/us3dir ./testdir --parallel 20#下载文件夹并限速为100MB/s./us3cli cp -r us3://buckettest/us3dir ./testdir --speedlimit 100MBCopyErrorSuccess
6、拷贝文件或文件夹
#命令格式us3cli cp us3://<bucketname>/<us3key> #使用示例#将文件从bucket1拷贝至bucket2中(两个bucket必须在同一地域中,如需要不同地域的数据复制,则需要使用跨区域复制功能)./us3cli cp us3://bucket1/test.txt us3://bucket2/test.txt#将文件夹从bucket1拷贝到bucket2中./us3cli cp -r us3://bucket1/test us3://bucket2/test#将bucket1中test文件夹中以".txt"结尾的文件拷贝到bucket2的test文件夹中./us3cli cp -r us3://bucket1/test us3://bucket2/test --include "*.txt"CopyErrorSuccess
7、删除文件或文件夹
7.1、删除单个文件
#命令格式:us3cli rm us3://<bucketname>/<us3key> #使用示例:#删除文件./us3cli rm us3://buckettest/test.txt#强制删除./us3cli rm -f us3://buckettest/test.txtCopyErrorSuccess
7.2、删除文件夹
#命令格式:us3cli rm -r us3://<bucketname>/<us3key> #使用示例:#删除文件夹./us3cli rm -r us3://buckettest/test#强制删除整个test文件夹./us3cli rm -r -f us3://buckettest/test#删除test文件夹下不含有test的文件./us3cli rm -r -f us3://buckettest/test --exclude "*test*"#设置并发数为10,强制清空当前buckettest存储空间./us3cli rm -r -f us3://buckettest --parallel 10 #删除文件夹,限制请求数量为每秒10个./us3cli rm -r -f us3://buckettest/test --qps 10CopyErrorSuccess
8、查询文件基本信息
#命令格式us3cli stat us3://<bucketname>/<us3key> #使用示例./us3cli stat us3://buckettest/test.txtCopyErrorSuccess
9、获取文件列表
#命令格式us3cli ls us3://<bucketname>[/us3key]#使用示例./us3cli ls us3://buckettest#拉取buckettest中的文件,只显示10个./us3cli ls us3://buckettest --limit 10#拉取buckettest中的文件,并以非目录形式展示#非目录形式:目录下所有的文件都显示完整路径,子目录下的文件也会列出./us3cli ls us3://buckettest --flat#列取buckettest中的文件,并展示是否已取回,以及取回时间#数据取回:指归档类型的数据短暂激活,可以下载./us3cli ls us3://buckettest --restoreCopyErrorSuccess
10、文件基本信息修改
#命令格式us3cli modify us3://<bucketname>/us3key#使用示例#修改文件mimetype为xxx/yyy./us3cli modify us3://buckettest/test.txt --mimetype xxx/yyy#为文件增加metadata key为 "name" value为 "us3cli"./us3cli modify us3://buckettest/test.txt --metadata name=us3cli#清空当前文件的metadata./us3cli modify us3://buckettest/test.txt --metadata "" --replace#修改文件的存储类型为ARCHIVE(归档类型)./us3cli modify us3://buckettest/test.txt --storageclass ARCHIVE常用命令:
操作 | 命令 | 描述 |
---|---|---|
配置管理 | config | 管理上传所需的公私钥及endpoint等信息,包括配置项的创建、修改、删除、更新、切换 |
创建存储空间 | mb | 创建存储空间 |
删除存储空间 | rb | 删除存储空间(存储空间为空) |
查看存储空间信息 | stat | 查看bucket的元数据信息 |
查看存储量 | du | 查看bucket的存储量(标准、低频、归档) |
普通上传 | cp | 将本地文件或目录上传到存储空间中 |
增量上传 | sync | 增量上传目录到存储空间中 |
流式上传 | rcat | 将流式文件上传到存储空间中 |
创建目录 | mkdir | 在us3存储空间中创建一个空目录 |
普通下载 | cp | 将存储空间中的文件或目录下载到本地 |
流式下载 | cat | 将存储空间中的数据下载并写入到标准输入中 |
拷贝 | cp | 将一个存储空间中的文件拷贝到另一个存储空间中(同一地域) |
移动 | mv | 将文件或目录移动到其他目录下(同一存储空间内) |
删除 | rm | 删除存储空间中的文件或目录 |
列表 | ls | 列出US3存储空间列表或US3存储空间中的文件列表 |
获取下载URL | sign | 获取存储空间中文件的下载链接 |
查看元数据 | stat | 查看存储空间中文件的元数据信息 |
修改元数据 | modify | 修改存储空间中文件的存储类型、MIMETYPE、MetaData |
归档数据取回 | restore | 将归档类型的文件激活为可下载状态 |
数据完整性校验 | etag | 查看本地文件、标准输出、US3存储空间的文件etag |
创建token | create-token | 创建一个用于操作US3的token |
删除token | delete-token | 删除一个用于操作US3的token |
更新token | update-token | 更新一个用于操作US3的token |
描述token | describe-token | 列取并描述操作US3的token |
版本更新 | update | 更新工具版本 |
版本特性 | version | 查看工具版本特性 |
config命令用于管理配置文件。
配置文件内容说明:
配置项 | 说明 | 填写说明 |
---|---|---|
AccessKey | 用于鉴权的bucket公钥 | API公钥 、Token公钥 |
SecretKey | 用于鉴权的bucket私钥 | API私钥 、Token私钥 |
Endpoint | 外网或内网域名 | 地域和域名 |
encrypt | 是否使用配置加密 | false 或 true |
enablessl | 是否使用https | false 或 true |
proxy | 代理地址 | “ip:port” |
language | 工具显示语言 | ZH 或 EN |
自定义配置文件格式,填写说明同上:
accesskey: "user accesskey"secretkey: "user secretkey"endpoint: "ufile.cn-north-02.ucloud.cn"encrypt: "false"enablessl: "false"proxy: "http://ip:port or https://ip:port"language: "EN"CopyErrorSuccess1.交互式配置
创建配置项
#./us3cli config请输入语言(Please enter the language): ZH/EN, 默认为ZH(default is ZH) : ZH请输入当前配置项名称: config1开始创建新配置项:[ config1 ]是否启用配置加密(y or n) ? n请输入API/Token公钥[当前:]: xxxxxxxxxxxxxxxxxxxxxx请输入API/Token私钥[当前:]: xxxxxxxxxxxxxxxxxxxxxx地区列表:No. RegionName Region 0 华北一 cn-bj 1 上海二 cn-sh2 2 广州 cn-gd 3 香港 hk 4 洛杉矶 us-ca 5 新加坡 sg 6 雅加达 idn-jakarta 7 台北 tw-tp 8 拉各斯 afr-nigeria 9 圣保罗 bra-saopaulo10 迪拜 uae-dubai 11 法兰克福 ge-fra 12 胡志明市 vn-sng 13 华盛顿 us-ws 14 孟买 ind-mumbai 15 首尔 kr-seoul16 东京 jpn-tky17 曼谷 th-bkk18 华北二 cn-wlcb19 英国 uk-london请输入region编号: 0内外网列表:No. Network0 外网 1 内网 请选择或输入内外网编号:0您选择的endpoint是:[cn-bj.ufileos.com],[当前:],请输入回车确认或自定义endponit:当前最终配置:ConfigName: config1AccessKey: xxxxxxxxxxxxxxxxxxxxxxSecretKey: xxxxxxxxxxxxxxxxxxxxxxEndpoint: cn-bj.ufileos.com请检查后输入回车确认:是否启用HTTPS (y or n) ? n是否启用代理(y or n):n配置文件 [ config1 ] 已修改是否使用该配置作为默认配置(当前默认配置为:< config >)(y or n)?CopyErrorSuccess注意:
1.首次创建的配置文件时会自动将该配置作为默认配置
2.配置加密只加密到公私钥,并且当前配置文件只在初次创建时可选是否加密
3.填写代理地址时只需要填写“ ip:port”,客户端会根据填写的https启用状态补充需要的"https://"或“http://”头部信息
列出配置项列表
./us3cli config --lsConfigName ModTime FilePath Authority config1 (Default) 2020-09-21 14:18:50 /root/.us3cliconfig/config1 Token config2 2020-09-21 14:18:50 /root/.us3cliconfig/config2 Token us3cli 2020-09-16 10:36:00 /root/.us3cliconfig/us3cli APIKeyCopyErrorSuccess说明:
1.Default标识表示该配置项是当前的默认配置
2.Authority表示权限分类,只用于快速区分Token和API密钥格式,不保证内容准确
切换配置项
./us3cli config --su config2CopyErrorSuccess
删除配置项
./us3cli config --rm config1CopyErrorSuccess注意:以下所有命令的(y or n)选项规则均不区分大小写,输入yes或y表示确认,其他选项均表示取消
打印配置项
./us3cli config --cat config2ConfigName:config2AccessKey: TOKEN_13be86*********SecretKey: BAtrQO8LYdgve1HS_benbK-MXNTl3**********Endpoint: cn-bj.ufileos.comLanguage: ZHCopyErrorSuccess2.非交互式配置
./us3cli config config3 --accesskey TOKEN_AAGASGAZVZV**** --secretkey USAsflmTAAF****** --endpoint cn-bj.ufileos.com --language ENConfiguration file [ config3 ] has been updatedCopyErrorSuccess3.临时使用(对其他命令生效)
上传文件时临时使用配置项config3
./us3cli cp test.txt us3://bucket1 --config config3CopyErrorSuccess
上传文件时临时使用配置文件 /home/ubuntu/myconfig1
./us3cli cp test.txt us3://bucket1 --config /home/ubuntu/myconfig1CopyErrorSuccess
上传文件时使用自定义配置内容
./us3cli cp test.txt us3://bucket1 --accesskey LTAI4G3t3BTza47xxxxxxxxxx --secretkey gznFs9daMtKmUaTq9xpxxxxxxxxxxxxx --endpoint cn-bj.ufileos.comCopyErrorSuccess该命令用于创建存储空间
本命令提供命令输入和交互式输入二选一的操作,命令输入参数,就会自动跳过交互式输入。
./us3cli mb us3://us3cli-test请输入要创建bucket的权限类型acl(private/public,默认为private):public地区列表:No. RegionName Region 0 华北一 cn-bj 1 上海二 cn-sh2 2 广州 cn-gd 3 香港 hk 4 洛杉矶 us-ca 5 新加坡 sg 6 雅加达 idn-jakarta 7 台北 tw-tp 8 拉各斯 afr-nigeria 9 圣保罗 bra-saopaulo10 迪拜 uae-dubai 11 法兰克福 ge-fra 12 胡志明市 vn-sng 13 华盛顿 us-ws 14 孟买 ind-mumbai 15 首尔 kr-seoul16 东京 jpn-tky17 曼谷 th-bkk18 华北二 cn-wlcb19 英国 uk-london 请输入要创建bucket地区编号或地区代码(默认为华北一:cn-bj):0Region: cn-bj当前账号下业务组分组信息如下:No. ProjectName ProjectId 1 Default org-orcwsj请输入要bucket的项目编号:1Number: 1ProjectID: org-orcwsjMake bucket [ us3cli-test ] successCopyErrorSuccess
非交互式创建bucket,输入acl,region以及projectid信息,acl,region是必填项,projectid可不填
./us3cli mb us3://us3cli-test --acl private --region cn-bj --projectid org-orcwsyCopyErrorSuccess注意:若您的bucket不在默认项目下,bucket操作都需要加上--projectid参数,请创建bucket时自行记录projectid,或通过 ls 命令查看projectid
本命令用于删除存储空间
本命令用于查看存储空间或文件信息
./us3cli stat us3://bucket1BucketName: bucket1 Region: cn-bj BucketId: ufile-dpgjzcn Type: public CreateTime: 2020-09-15 18:17:24ModifyTime: 2020-09-15 18:17:24CopyErrorSuccess
查看us3://bucket1/test.txt的文件信息
./us3cli stat us3://bucket1/aaa.txtName: aaa.txt X-Ufile-Create-Time: Fri, 18 Sep 2020 10:09:05 GMT X-Ufile-Storage-Class: STANDARD Server: nginx/1.11.1 Date: Mon, 21 Sep 2020 11:17:56 GMT Content-Type: application/octet-stream Accept-Ranges: bytes Etag: "AQAAAEpjpDD8COEdGg3uOeLfsR_ddQgc"Content-Length: 4298 Last-Modified: Fri, 18 Sep 2020 10:09:05 GMT Vary: OriginCopyErrorSuccess该命令用于获取指定存储空间(Bucket)各存储类型的存储量大小,以及总存储量
注意:存储量结算时间为当前日期前一天0:00
StorageClass Size STANDARD: 1.05 GBIA: 0 GB ARCHIVE: 0 GB Total storage: 1.05 GBCopyErrorSuccess
查看bucket1下的testfolder目录下各类型存储量以及文件数量
#./us3cli du us3://bucket1/testfolder FileCount FileSizeSum 10000 99.77 MB STANDARD 10000 99.77 MB IA 0 0 B ARCHIVE 0 0 B UpdateTime: 2020-12-24 11:40:27 ThuCopyErrorSuccess注意:当使用命令首次查看某个目录或前缀下的存储量时,会将数据保存在本地,24内使用非强制更新查看存储量时,都不会重新请求,只显示前24小时内拉取到的最新数据。有更新需要的可以添加-f/--force选项再次拉取存储量。
该命令用于上传、下载、拷贝文件
上传文件
us3cli cp <本地文件路径> us3://<桶名字>/<文件Key> [--check][--recursive][--reduce][--parallel <分片上传并发数>][--speedlimit <速度限制>][--storageclass <存储类型>][--exclude <通配符表达式>][--rexclude <正则表达式>][--include <通配符表达式>][--rinclude <正则表达式>][--metadata <Key>=<value1>[,<key2>=<value2>]...][--mimetype <多媒体文件格式>]CopyErrorSuccess下载文件
us3cli cp us3://<桶名字>/<文件Key> <本地文件路径> [--recursive][--reduce][--speedlimit <速度限制>][--exclude <通配符表达式>][--rexclude <正则表达式>][--include <通配符表达式>][--rinclude <正则表达式>][--parallel <分片下载并发数>][--partsize <下载分片大小>]CopyErrorSuccess拷贝文件
us3cli cp us3://<桶名字>/<文件Key> us3://<桶名字>/<文件Key> [--recursive][--reduce][--exclude <通配符表达式>][--rexclude <正则表达式>][--include <通配符表达式>][--rinclude <正则表达式>][--metadata <Key>=<value1>[,<key2>=<value2>]...]CopyErrorSuccess注意:
1.通配符表达式暂时只支持“*”,"?"两种字符,并且需要注意的是,四种表达式筛选均以当前目录下文件路径为准
如:us3://us3cli/test 目录下的test2/test3.txt 会以test2/test3.txt作为字符串筛选,而不是以test3.txt作为字符串进行筛选
2.以下所有speedlimit选项均描述为平均速度
3.单个文件上传时根据文件大小使用不同的请求,文件大于64MB使用分片上传,小于64MB时使用普通的put请求,故上传中的parallel参数仅限上传64MB以上大文件使用
4.由于windows环境下文件名存在不区分大小写的情况,要下载的文件已存在时,会在文件名及文件后缀名之间默认添加(1),(2)...等作为文件名后缀,如:
文件test.txt存在,则下载的文件保存为test(1).txt,若此时test(1).txt也存在,也保存为test(2).txt,依次类推CopyErrorSuccess./us3cli cp ~/go/src/test.txt us3://bucket1/testCopyErrorSuccess
上传单个大文件(大于64MB)并设置分片并发数为10
./us3cli cp ~/go/src/test.mp4 us3://bucket1/test.mp4 --parallel 10# 文件大小小于64MB时该参数无效CopyErrorSuccess
下载单个文件
./us3cli cp us3://bucket1/test/test.txt ~/go/src/test.txtCopyErrorSuccess
拷贝单个文件
./us3cli cp us3://bucket1/test.txt us3://bucket2/test.txtCopyErrorSuccess
拷贝文件夹
./us3cli cp -r us3://bucket1/test us3://bucket2/testCopyErrorSuccess
下载文件夹
./us3cli cp -r us3://bucket/test ~/go/src/testCopyErrorSuccess
指定存储类型上传
上传单个文件并指定存储类型为IA(低频访问)类型
./us3cli cp ~/go/src/test.txt us3://bucket/path/test.txt --storageclass IACopyErrorSuccess
限速上传
上传文件test.txt,并设置速度为1024Kb/s
./us3cli cp ~/go/src/test.txt us3://bucket/test.txt --speedlimit 1024KbCopyErrorSuccess
批量上传
上传所有格式为jpg的文件(通配符)
./us3cli cp -r ~/go/src/test us3://bucket/test --include "*.jpg"CopyErrorSuccess上传所有a开头b结尾的文件(正则表达式)
./us3cli cp -r ~/go/src/test us3://bucket/test --rinclude "a*b"CopyErrorSuccess上传所有不包括a开头b结尾的文件(正则表达式)
./us3cli cp -r ~/go/src/test us3://bucket/test --rexclude "a*b"CopyErrorSuccess上传所有文件名不包括001的文件(通配符)
./us3cli cp -r ~/go/src/test us3://bucket/test --exclude "*001*"CopyErrorSuccess
上传单个文件并指定元数据信息
./us3cli cp ~/go/src/test us3://bucket/test --metadata key1=value1,key2=value2CopyErrorSuccess
指定mimetype为text/plain上传
./us3cli cp ~/go/src/test us3://bucket/test --mimetype text/plainCopyErrorSuccess
上传文件夹并检查etag是否一致
./us3cli cp -r ~/go/src/test us3://bucket/test --checkCopyErrorSuccess本命令用于目录的增量上传
增量模式说明:
1.cache模式使用本地缓存,从本地上传到bucket成功的文件,都会被记录为上传成功文件,如果需要重新上传,可以选择删除当前用户目录下的.us3cliconfig/leveldb文件夹,使用命令时会自动创建新的文件夹。
2.local模式下最终以本地文件为标准,保证bucket中的目标文件夹和本地同步,以下场景会进行文件删除,请慎用:
增量上传文件夹后,将本地文件删除,再次使用local模式增量,会将bucket中的文件删除以保持US3 Bucket和本地同步
./us3cli sync /root/test us3://bucket/pathCopyErrorSuccess
cache模式,以本地缓存中的文件etag信息为标准,同步本地文件
./us3cli sync /root/test us3://bucket/path --ruler etagCopyErrorSuccess
local模式,对比本地文件夹与指定us3目录中的所有文件的修改时间,通过上传文件以及删除us3文件操作,将us3目录状态与本地保持一致(如us3中有相对于本地多余的文件,则会删除us3中对应多余文件,请慎用)
./us3cli sync /root/test us3://bucket/path --mode localCopyErrorSuccess
local模式,对比本地文件夹与指定us3目录中的所有文件的etag信息,通过上传文件以及删除us3文件操作,将us3目录状态与本地保持一致(如us3中有相对于本地多余的文件,则会删除us3中对应多余文件,请慎用)
./us3cli sync /root/test us3://bucket/path --mode local --ruler etagCopyErrorSuccess
限速为1024 Kb/s上传
./us3cli sync /root/test us3://bucket/path --speedlimit 1024KbCopyErrorSuccess
并发上传文件夹
./us3cli sync /root/test us3://bucket/path --parallel 5CopyErrorSuccess
指定mimetype上传
./us3cli sync /root/test us3://bucket/path --mimetype "mimetype"CopyErrorSuccess
指定存储类型上传
./us3cli sync /root/test us3://bucket/path --storageclass "ARCHIVE"CopyErrorSuccess
指定元数据上传
./us3cli sync /root/test us3://bucket/path --metadata "key1=value1,key2=value2"CopyErrorSuccess本命令用于流式上传文件
cat test.txt | ./us3cli rcat us3://bucket1/test.txtCopyErrorSuccess
流式上传文件test.txt并设置限速为 2MB/s
cat test.txt | ./us3cli rcat us3://bucket1/test.txt --speedlimit 2MBCopyErrorSuccess
流式上传文件test.txt并设置重试次数为5次
cat test.txt | ./us3cli rcat us3://bucket1/test.txt --retrycount 5CopyErrorSuccess
流式上传文件test.txt并设置并发数为2
cat test.txt | ./us3cli rcat us3://bucket1/test.txt --parallel 2CopyErrorSuccess本命令用于在US3存储空间内创建目录
./us3cli mkdir us3://bucket/dirCopyErrorSuccess
创建多级目录
./us3cli mkdir -p us3://bucket/dir1/dir2CopyErrorSuccess本命令用于流式下载文件
./us3cli cat us3://bucket1/test.txtCopyErrorSuccess
流式下载test.txt到本地
./us3cli cat us3://bucket1/test.txt > test.txtCopyErrorSuccess
流式下载并限速为1MB/s
./us3cli cat us3://bucket1/test.txt --speedlimit 1MB > test.txtCopyErrorSuccess
流式下载并设置重试次数为5次
./us3cli cat us3://bucket1/test.txt --retrycount 5 > test.txtCopyErrorSuccess
下载并设置分片大小为2M
./us3cli cat us3://bucket1/test.txt --partsize 2M > test.txtCopyErrorSuccess本命令用于移动文件
注意:本命令只能用于相同bucket之内,同时-f选项只支持文件
./us3cli mv us3://bucket/test.txt us3://bucket/test/test.txtCopyErrorSuccess
强制移动文件
./us3cli mv us3://bucket/test.txt us3://bucket/test/test.txt -fCopyErrorSuccess
移动文件夹 注意:目标文件夹存在时,文件夹会被移动到目标文件夹子目录中
./us3cli mv us3://bucket/test us3://bucket/test2CopyErrorSuccess本命令用于删除目录或者对象
./us3cli rm us3://bucket/test.txtCopyErrorSuccess
强制删除文件
./us3cli rm -f us3://bucket/test.txtCopyErrorSuccess
强制删除文件夹
./us3cli rm -r -f us3://bucket/testCopyErrorSuccess
批量删除test文件夹中后缀名为.jpg的文件
./us3cli rm -r us3://bucket/test --include "*.jpg"CopyErrorSuccess
限制删除操作最多每秒10个请求,最大可以上调到1000qps,取值范围在1~1000
./us3cli rm -r us3://bucket/test --include "*.jpg" --qps 10CopyErrorSuccess
批量删除文件并设置并发数为30
./us3cli rm -r us3://bucket/test --parallel 30CopyErrorSuccess
清空bucket
./us3cli rm -r -f us3://bucket --parallel 10CopyErrorSuccess
删除sync产生的缓存
./us3cli rm -f --cache syncCopyErrorSuccess该命令用于列出存储空间(Bucket)、对象(Object)或ProjectID
注意:
ls列取文件列表默认情况修改为只显示文件key,文件大小,存储类型,创建时间,可以自行通过参数添加restore、etag、mimetype等信息
./us3cli lsBucketName Region Acl CreateTime bucket1 cn-bj public 2020-03-27 17:20:56bucket2 cn-bj private 2020-03-27 17:20:43us3cli cn-bj public 2020-09-15 16:17:24CopyErrorSuccess
列出bucket下所有对象
./us3cli ls us3://bucketKey FileSize StorageClass Etag CreateTime us3://bucket/cf1 DIR IA AQAAANo5o-5ea0sNMlW_75VgGJCv2AcJ 2020-07-16 18:51:04 us3://bucket/aa.txt 4KB STANDARD AQAAAGNlfLt9cIbFawzU5caZm7aDZkho 2020-07-22 11:04:34 us3://bucket/aa.txt 4KB ARCHIVE AQAAAGNlfLt9cIbFawzU5caZm7aDZkho 2020-07-22 11:04:34CopyErrorSuccess
列出当前账号下所有project
./us3cli ls --project当前账号下项目信息如下:No. ProjectName ProjectId 1 Default org-ddhm4o2 Test org-nhrc4y3 Test2 org-wr5pejCopyErrorSuccess
列出bucket下对象并限制显示文件数量为2
./us3cli ls us3://bucket --limit 2CopyErrorSuccess
列出bucket下对象并显示数据解冻状态信息
./us3cli ls us3://bucket --restoreCopyErrorSuccess
递归当前目录列出非目录形式的文件列表(展开所有目录)
./us3cli ls us3://bucket --flatCopyErrorSuccess本命令用于文件下载url获取
./us3cli sign us3://bucket/test.txtCopyErrorSuccess
获取限时100s 的url签名
./us3cli sign us3://bucket/test.txt --expires 100CopyErrorSuccess该命令用于修改us3中的文件信息
修改test.txt的存储类型为STANDARD标准型
./us3cli modify us3://bucket/test.txt --storageclass STANDARDCopyErrorSuccess
mimetype改变
修改test.txt文件的mimetype信息
./us3cli modify us3://bucket/test.txt --mimetype image/x-iconCopyErrorSuccess
metadata改变
1.修改test.txt文件的元数据信息,以key=value形式作为参数,可修改多个元数据信息,中间以英文逗号","分隔
./us3cli modify us3://bucket/test.txt --metadata "key1=value1,key2=value2"CopyErrorSuccess2.清除原有元数据,添加新的内容
./us3cli modify us3://bucket/test.txt --metadata "key1=value1" --replaceCopyErrorSuccess3.删除所有元数据
./us3cli modify us3://bucket/test.txt --metadata "" --replaceCopyErrorSuccess本命令用于恢复冷冻状态的对象(object)为可读状态
./us3cli restore us3://bucket/test.txtCopyErrorSuccess
数据解冻整个目录中所有文件
./us3cli restore -r us3://bucket/testCopyErrorSuccess
批量激活文件并设置并发数为30
./us3cli restore -r us3://bucket/test --parallel 30CopyErrorSuccess该命令用于计算文件etag值
./us3cli etag main.goName Etag main.go AQAAAEpmwm87EANJQDpLTEmxsjR7-R0NCopyErrorSuccess
计算us3文件etag值
./us3cli etag us3://bucket1/test.txtName Etag us3://bucket1/test.txt AQAAAEpmwm87EANJQDpLTEmxsjR7-R0NCopyErrorSuccess
计算标准输入etag值
cat test.txt | ./us3cli etag -Name Etag [-] SmbCbzsQA0lAOktMSbGyNHv5HQ0=CopyErrorSuccess
计算多个文件etag
cat test4.txt | ./us3cli etag us3://bucket1/test.txt us3://bucket1/test2.txt test3.txt -Name Etag us3://bucket1/test.txt AQAAAEpmwm87EANJQDpLTEmxsjR7-R0Nus3://bucket1/test2.txt AQAAAEpmwm87EANJQDpLTEmxsjR7-R0Ntest3.txt AQAAAHPuBl-6VRpzVHiBFjSOVhLrcsam[-] SmbCbzsQA0lAOktMSbGyNHv5HQ0=CopyErrorSuccess本命令用于创建Token
本命令用于删除Token
本命令用于更新Token
本命令用于列出和描述Token
....
- 描述某个特定的tokenCopyErrorSuccessus3cli describe-token --token-id c1fd74ad-9c04-4ee2-bb1e-xxxxxxxxx --region cn-bj --projectid org-xxxxx Token Id: c1fd74ad-9c04-4ee2-bb1e-xxxxxxxx Token Name: test-token Allowed buckets: [] Allowed operations: [TOKEN_ALLOW_NONE] Allowed prefixes: [] Exipre time: 86400 Private key: dxxxxxxxxxxxxxxxxxxxxxx Public key: TOKEN_xxxxxxxxxxxxxxxxxxxx
## update本命令用于版本更新注意:1.windows用户更新后会产生一个名为config.temp的临时文件,在下一次运行us3cli时会自动删除。2.将本工具放入bin目录下执行时,更新操作会出现找不到文件的问题,具体天博·(中国)官方网站请查看常见问题页面。### 命令格式CopyErrorSuccessus3cli update [--force]
### 参数说明CopyErrorSuccess-f, --force :忽略版本,强制更新 -h, --help :当前命令使用说明
##### 使用示例CopyErrorSuccess./us3cli update
Your version is not the latest version, do you update it now(y or n):y Downloaded latest version package,saved as: us3cli-linux64
## version本命令用于查看工具版本### 命令格式CopyErrorSuccessus3cli version
### 使用示例CopyErrorSuccess./us3cli version
us3cli version 1.2.0
```