对于腾讯云对象存储文件管理方式,我们大部分网友会通过COSBrowser可视化工具对文件进行上传、下载,以及存储桶的创建管理。这样操控的缺点就是,对于一般小型项目管理文件还是比较轻松的,毕竟需要处理的文件并不是太多,即便稍微有点效率慢,我们等一等也无所谓。

老蒋在昨天"腾讯云对象存储COS Migration工具实现多平台存储迁移至COS方法"文章中有介绍到一款官方提供的COS Migration工具可以快速的将目前友商的对象存储文件或者我们本地的,甚至远程URL聚合的地址静态文件迁移到COS中。但是,如果我们需要一款工具批量对COS对象存储中的文件批量管理,那用什么工具呢?

在这篇文章中,老蒋继续介绍来自官方对象存储COSCMD工具,可以批量创建存储桶、批量上传、下载和删除COS文件,这个对于有需要批量将本地文件或者下载到本地备份的,可能会有需要。当然这个工具是命令行操作的,需要在命令行中操作,如果有需要的可以试试。官方文档地址:https://cloud.tencent.com/document/product/436/10976

第一、系统支持和安装环境


系统需要支持Python 2.7/3.5/3.6,而且需要是最新版的pip,然后才可以继续执行命令行。

> pip install coscmd

安装coscmd。安装完毕之后我们可以检查版本,且后面可以用命令更新pip。

> pip install coscmd -U

腾讯云对象存储COSCMD工具命令式批量管理存储桶文件

第二、COSCMD 工具配置方法


COSCMD 工具在使用前需要进行参数配置,用户可以通过如下命令来配置。

> coscmd config [OPTION]...<FILE>...
> [-h] --help
> [-a] <SECRET_ID>
> [-s] <SECRET_KEY>
> [-t] <TOKEN>
> [-b] <BucketName-APPID>
> [-r] <REGION> | [-e] <ENDPOINT>
> [-m] <MAX_THREAD>
> [-p] <PART_SIZE>
> [--do-not-use-ssl][--anonymous]

示范:

> coscmd config -a AChT4ThiXAbpBDEFGhT4ThiXAbp** -s WE54wreefvds3462refgwewe -b examplebucket-1250000000 -r ap-beijing

参数配置说明:

| 选项 | 参数说明 | 是否必选 | 有效值 |
|---|---|---|---|
| -a | 密钥 ID 请前往 API 密钥控制台 获取 | 是 | 字符串 |
| -s | 密钥 Key 请前往 API 密钥控制台 获取 | 是 | 字符串 |
| -t | 临时密钥 token,当使用临时密钥时需要配置,设置 x-cos-security-token 头部 | 否 | 字符串 |
| -b | 指定的存储桶名称,存储桶的命名格式为 BucketName-APPID,请参见 命名规范 | 是 | 字符串 |
| -r | 存储桶所在地域,请参见 地域和访问域名 | 是 | 字符串 |
| -e | 设置请求的 ENDPOINT,设置 ENDPOINT 参数后,REGION 参数会失效 | 否 | 字符串 |
| -m | 多线程操作的最大线程数(默认为5,范围为1 - 30) | 否 | 数字 |
| -p | 分块操作的单块大小(单位MB,默认为1MB,范围为1 - 1000) | 否 | 数字 |
| --do-not-use-ssl | 使用 HTTP 协议,而不使用 HTTPS | 否 | 字符串 |
| --anonymous | 匿名操作(不携带签名) | 否 | 字符串 |

如果我们通过操作命令感觉困难,可以直接下载"~/.cos.conf"文件,然后编辑后再替换。示范:

> [common]
> secret_id = AChT4ThiXAbpBDEFGhT4ThiXAbp

>
> secret_key = WE54wreefvds3462refgwewe
**
>
> bucket = examplebucket-1250000000
>
> region = ap-beijing
>
> max_thread = 5
>
> part_size = 1
>
> schema = https

第三、常规的COSCMD操作


1、指定 Bucket 和 Region 的命令


通过-b <BucketName-APPID>指定 Bucket, 可以指定特定的 Bucket。存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式。通过-r <region>指定 Region, 可以指定特定的 Region。

> #命令格式
> coscmd -b <BucketName-APPID> -r <region> <action> ...
> #操作示例-创建bucket
> coscmd -b examplebucket-1250000000 -r ap-beijing createbucket
> #操作示例-上传文件
> coscmd -b examplebucket-1250000000 -r ap-beijing upload exampleobject exampleobject

2、创建存储桶


建议配合-b <BucketName-APPID>指定 Bucket 和-r <region>指定 Region 使用。

> #命令格式
> coscmd -b <BucketName-APPID> createbucket
> #操作示例
> coscmd createbucket
> coscmd -b examplebucket-1250000000 -r ap-beijing createbucket

3、删除存储桶


建议配合-b <BucketName-APPID>指定 Bucket 和-r <region>指定 Region 使用。

> #命令格式
> coscmd -b <BucketName-APPID> deletebucket
> #操作示例
> coscmd deletebucket
> coscmd -b examplebucket-1250000000 -r ap-beijing deletebucket
> coscmd -b examplebucket-1250000000 -r ap-beijing deletebucket -f

4、上传文件或文件夹


a. 上传文件命名

> #命令格式
> coscmd upload <localpath> <cospath>
> #操作示例
> #将本地的 /data/exampleobject 文件上传到 cos 的 data/exampleobject 路径下
> coscmd upload /data/exampleobject data/exampleobject
> coscmd upload /data/exampleobject data/
> #指定头部上传文件
> #指定对象类型,上传一个归档的文件
> coscmd upload /data/exampleobject data/exampleobject -H "{'x-cos-storage-class':'Archive'}"
> #设置 meta 元属性
> coscmd upload /data/exampleobject data/exampleobject -H "{'x-cos-meta-example':'example'}"

b. 上传文件夹命令

> #命令格式
> coscmd upload -r <localpath> <cospath>
> #操作示例
> coscmd upload -r /data/examplefolder data/examplefolder
> #cos上的存储路径为 examplefolder2/examplefolder
> coscmd upload -r /data/examplefolder examplefolder2/
> #上传到 bucket 根目录
> coscmd upload -r /data/examplefolder/ /
> #同步上传,跳过 md5 相同的文件
> coscmd upload -rs /data/examplefolder data/examplefolder
> #同步上传,删除本地已经删除的文件
> coscmd upload -rs --delete /data/examplefolder data/examplefolder
> #忽略 .txt 和 .doc 的后缀文件
> coscmd upload -rs /data/examplefolder data/examplefolder --ignore .txt,.doc

5、下载文件或者文件夹


a. 下载文件命令

> #命令格式
> coscmd download <cospath> <localpath>
> #操作示例
> coscmd download data/exampleobject /data/exampleobject
> coscmd download data/exampleobject /data/

b. 下载文件夹命令

> #命令格式
> coscmd download -r <cospath> <localpath>
> #操作示例
> coscmd download -r data/examplefolder/ /data/examplefolder
> coscmd download -r data/examplefolder/ /data/
> #覆盖下载当前bucket根目录下所有的文件
> coscmd download -rf / /data/examplefolder
> #同步下载当前 bucket 根目录下所有的文件,跳过 md5校验相同的文件
> coscmd download -rs / /data/examplefolder
> #同步下载当前 bucket 根目录下所有的文件,同时删除云上删除但本地未删除的文件
> coscmd download -rs --delete / /data/examplefolder
> #忽略 .txt 和 .doc 的后缀文件
> coscmd download -rs / /data/examplefolder --ignore .txt,.doc

6、删除文件或者文件夹


a. 删除文件

> #命令格式
> coscmd delete <cospath>
> #操作示例
> coscmd delete data/exampleobject

b. 删除文件夹

> #命令格式
> coscmd delete -r <cospath>
> #操作示例
> coscmd delete -r /data/examplefolder/
> coscmd delete -r /

7. 复制文件或者文件夹


a. 复制文件

> #命令格式
> coscmd copy <sourcepath> <cospath>
> #操作示例
> #复制 examplebucket2-1250000000 存储桶下的 data/exampleobject 对象到 examplebucket1-1250000000 存储桶的 data/examplefolder/exampleobject
> coscmd -b examplebucket1-1250000000 -r ap-guangzhou copy examplebucket2-1250000000.ap-beijing.myqcloud.com/data/exampleobject data/examplefolder/exampleobject
> #修改存储类型,将文件类型改为低频
> coscmd -b examplebucket1-1250000000 -r ap-guangzhou copy examplebucket2-1250000000.ap-beijing.myqcloud.com/data/exampleobject data/examplefolder/exampleobject -H "{'x-cos-storage-class':'STANDARD_IA'}"
> #修改存储类型,将文件类型改为归档
> coscmd -b examplebucket1-1250000000 -r ap-guangzhou copy examplebucket2-1250000000.ap-beijing.myqcloud.com/data/exampleobject data/examplefolder/exampleobject -H "{'x-cos-storage-class':'Archive'}"

b. 复制文件夹

> #命令格式
> coscmd copy -r <sourcepath> <cospath>
> #操作示例
> #复制 examplebucket2-1250000000 存储桶下的 examplefolder 目录到 examplebucket1-1250000000 存储桶的 examplefolder 目录
> coscmd -b examplebucket1-1250000000 -r ap-guangzhou copy -r examplebucket2-1250000000.cos.ap-guangzhou.myqcloud.com/examplefolder/ examplefolder
> coscmd -b examplebucket1-1250000000 -r ap-guangzhou copy -r examplebucket2-1250000000.cos.ap-guangzhou.myqcloud.com/examplefolder/ examplefolder/

总之,如果我们需要有较大文件处理的时候,使用COSCMD工具操作效率会大大提高。如果我们少文件的话,就用COSBROWSER工具。