COS 对象存储
COS 配置
coscli 为腾讯云对象存储cos的客户端工具。相同的功能客户端工具还有一个是coscmd【需要依赖Python环境】
#coscli -h Welcome to use coscli! Usage: coscli [flags] coscli [command] Available Commands: abort Abort parts config Init or edit config file cp Upload, download or copy objects du Displays the size of a bucket or objects hash Calculate local file's hash-code or show cos file's hash-code help Help about any command ls List buckets or objects lsparts List multipart uploads mb Create bucket rb Remove bucket restore Restore objects rm Remove objects signurl Gets the signed download URL sync Synchronize objects Flags: -c, --config-path string config file path(default is $HOME/.cos.yaml) -h, --help help for coscli -v, --version version for coscli
coscmd 上传资源到cos对象存储上 [grayscale]
$ coscmd -h usage: coscmd [-h] [-d] [-s] [-b BUCKET] [-r REGION] [-c CONFIG_PATH] [-l LOG_PATH] [--log_size LOG_SIZE] [--log_backup_count LOG_BACKUP_COUNT] [-v] {config,upload,download,delete,abort,copy,move,list,listparts,info,restore,signurl,createbucket,deletebucket,putobjectacl,getobjectacl,putbucketacl,getbucketacl,putbucketversioning,getbucketversioning,probe} ... an easy-to-use but powerful command-line tool. try 'coscmd -h' to get more informations. try 'coscmd sub-command -h' to learn all command usage, likes 'coscmd upload -h' positional arguments: {config,upload,download,delete,abort,copy,move,list,listparts,info,restore,signurl,createbucket,deletebucket,putobjectacl,getobjectacl,putbucketacl,getbucketacl,putbucketversioning,getbucketversioning,probe} config Config your information at first upload Upload file or directory to COS download Download file from COS to local delete Delete file or files on COS abort Aborts upload parts on COS copy Copy file from COS to COS move move file from COS to COS list List files on COS listparts List upload parts info Get the information of file on COS restore Restore signurl Get download url createbucket Create bucket deletebucket Delete bucket putobjectacl Set object acl getobjectacl Get object acl putbucketacl Set bucket acl getbucketacl Get bucket acl putbucketversioning Set the versioning state getbucketversioning Get the versioning state probe Connection test
linux自动安装配置COSCLI
腾讯云文档: https://cloud.tencent.com/document/product/436/63144#alias
单击 下载 Linux 版本 COSCLI,或运行以下命令下载 COSCLI
wget https://github.com/tencentyun/coscli/releases/download/v0.12.0-beta/coscli-linux mv coscli-linux coscli chmod 755 coscli ln -sv coscli /bin coscli --version
COSCLI 配置参数
使用./coscli --help
命令来快速查看 COSCLI 的使用方法。
初次使用时,COSCLI 会默认在~/.cos.yaml
的位置生成配置文件,后续您也可以使用./coscli config init
命令在其他位置为 COSCLI 交互式地生成配置文件。
配置文件中各配置项
配置文件中各配置项的说明如下:
配置项 | 说明 |
---|---|
Secret ID | 密钥 ID,可从 访问管理控制台 中创建并获取。 |
Secret Key | 密钥 Key,可从 访问管理控制台 中创建并获取。 |
Session Token | 临时密钥 token,当使用临时密钥时需要配置,若不使用可以直接按 Enter 跳过。 |
APP ID | APP ID 是您在成功申请腾讯云账户后所得到的账号,由系统自动分配,可从 账号信息 中获取。一个存储桶的全称由Bucket Name 和APP ID 这两个元素组成,格式为``,详情请参见 存储桶命名规范。 |
Bucket Name | 存储桶名称,和 APP ID 一起构成存储桶全称,格式为``,详情请参见 存储桶命名规范。 |
Bucket Region | 存储桶所在地域,详情请参见 地域与访问域名。 |
Bucket Alias | 存储桶别名,配置后可以在使用时用BucketAlias 代替BucketName-APPID ,减少所需输入的命令长度,如果不配置此项,BucketAlias 的值是BucketName-APPID 的值。 |
其他配置方法
除了使用./coscli config init交互式地生成配置文件外,您也可以直接手动编写 COSCLI 的配置文件,COSCLI 的配置文件格式是yaml格式,配置文件示例如下:
COSCLI 默认从 ~/.cos.yaml 处读取配置项,若用户想要使用自定义的配置文件,请在命令后使用 -c (–config-path)选项。配置文件存储的 secretid/secretkey/sessiontoken 均为加密后的字符串
cos: base: secretid: XXXXXXXXXXXXXXX secretkey: XXXXXXXXXXXXXXXXX sessiontoken: "" buckets: - name: examplebucket1-1250000000 alias: bucket1 region: ap-shanghai - name: examplebucket2-1250000000 alias: bucket2 region: ap-guangzhou - name: examplebucket3-1250000000 alias: bucket3 region: ap-chengdu
配置多个存储桶
COSCLI 支持多个存储桶,然而在初次配置时,COSCLI 只会要求您配置一个存储桶的信息,您后续可以使用./coscli config add命令添加存储桶配置。
添加一个新的存储桶配置
./coscli config add -b examplebucket3-1250000000 -r ap-chengdu -a bucket3
COSCLI 配置
添加配置
添加一个新的存储桶配置
./coscli config add -b examplebucket3-1250000000 -r ap-chengdu -a bucket3
删除一个已经存在的存储桶配置
./coscli config delete -a bucket3
修改默认配置文件中的 session-token
./coscli config set -t test-token123
打印配置信息
#./coscli config show Configuration file path: /root/.cos.yaml ==================== Basic Configuration Information: Secret ID: AKIDsZ2XXXXXXXXXXXXXXXXXXXXXXX Secret Key: vd5IFxPbXXXXXXXXXXXXXXXXXXXXXX Session Token: ==================== Bucket Configuration Information: - Bucket 1 : Name: ww-oss-XXX Region: ap-shanghai Alias: static-rXXXXX - Bucket 2 : Name: taxcore-XXX Region: ap-shanghai Alias: doc-XXX
创建桶
// 创建存储桶 bucket3 ./coscli mb cos://bucket3-1250000000 -r ap-chengdu // 更新配置文件 ./coscli config add -b bucket3-1250000000 -r ap-chengdu -a bucket3 // 更新后可用 cos://bucket3 访问此存储桶
删除桶
// 删除存储桶 bucket3 ./coscli rb cos://bucket3-1250000000 -r ap-chengdu // 更新配置文件 ./coscli config delete -a bucket3
上传下载文件 cp
上传
上传单文件 ./coscli cp ~/example.txt cos://bucket1/example.txt 将本地 test 文件夹下的所有文件上传至 bucket1 桶中的 example 文件夹下 ./coscli cp ~/test/ cos://bucket1/example/ -r 将本地 test 文件夹下的所有 .mp4 类型文件上传至 bucket1 桶中的 example 文件夹下 ./coscli cp ~/test/ cos://bucket1/example/ -r --include .*.mp4 将本地 test 文件夹下的所有非 .md 类型文件上传至 bucket1 桶中的 example 文件夹下 ./coscli cp ~/test/ cos://bucket1/example/ -r --exclude .*.md 将本地 dir 文件夹下有 dirA、dirB、dirC、dirD 四个文件夹,将 dir 文件夹下除 dirD 文件夹之外的所有内容上传 ./coscli cp dir/ cos://bucket1/example/ -r --exclude dirD/.* 将本地 test 文件夹下的所有文件上传至 bucket1 桶中的 example 文件夹下,并以归档类型文件存储 ./coscli cp ~/test/ cos://bucket1/example/ -r --storage-class ARCHIVE
下载
下载单文件 ./coscli cp cos://bucket1/example.txt ~/example.txt 将 bucket1 桶中的 example 文件夹下的所有文件下载到本地 test 文件夹下 ./coscli cp cos://bucket1/example/ ~/test/ -r 将 bucket1 桶中的 example 文件夹下所有 .mp4 类型文件下载至本地 test 文件夹下 ./coscli cp cos://bucket1/example/ ~/test/ -r --include .*.mp4 将 bucket1 桶中的 example 文件夹下所有非 .md 类型文件下载至本地 test 文件夹 ./coscli cp cos://bucket1/example/ ~/test/ -r --exclude .*.md
拷贝文件
桶内拷贝单文件 ./coscli cp cos://bucket1/example.txt cos://bucket1/example_copy.txt 跨桶拷贝单文件 ./coscli cp cos://bucket1/example.txt cos://bucket2/example_copy.txt 将 bucket1 桶中 example1 文件夹下的所有文件拷贝至 bucket2 桶中 example2 文件夹下 ./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r 将 bucket1 桶中 example1 文件夹下的所有 .mp4 类型文件拷贝至 bucket2 桶中 example2 文件夹下 ./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r --include .*.mp4 将 bucket1 桶中的 example1 文件夹下所有非 .md 类型文件拷贝至 bucket2 桶中 example2 文件夹下 ./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r --exclude .*.md
同步上传下载或拷贝文件 sync
sync 命令用于同步上传、下载或拷贝文件,与 cp 命令不同的是:sync 命令首先会对比同名文件的 crc64,如果 crc64 值相同则不进行传输
sync 命令包含以下可选 flag:
flag 简写 | flag 全称 | flag 用途 |
---|---|---|
无 | –include | 包含特定模式的文件 |
无 | –exclude | 排除特定模式的文件 |
-r | –recursive | 是否递归遍历文件夹下所有文件 |
无 | –storage-class | 指定上传至文件的类型(默认 STANDARD) |
无 | –part-size | 文件分块大小(默认32MB,最大支持5GB) |
无 | –thread-num | 并发线程数(默认并发5) |
无 | –rate-limiting | 单链接速率限制(0.1 - 100MB/s) |
无 | –snapshot-path | 指定保存上传或者下载文件时的快照信息所在的目录。在下一次上传或者下载文件时,coscli 会读取指定目录下的快照信息进行增量上传或者下载。本选项用来加速目录文件同步。 |
无 | –meta | 上传文件的元信息。包括部分 HTTP 标准属性(HTTP Header)以及以x-cos-meta- 开头的用户自定义元数据(User Meta)。文件元信息格式为header:value#header:value ,示例为Expires:2022-10-12T00:00:00.000Z#Cache-Control:no-cache#Content-Encoding:gzip#x-cos-meta-x:x 。 |
说明:
sync 命令在上传和下载大文件时会自动启用并发上传/下载。
当文件大于
--part-size
时,COSCLI 会先将文件按--part-size
进行切块,之后用--thread-num
个线程并发地执行上传/下载任务。每个线程都会维护一个链接,对于每个链接,您可以使用
--rate-limiting
参数对单链接进行限速,当启用并发上传/下载时,总速率为--thread-num * --rate-limiting
。当以分块形式上传/下载文件时,会默认开启断点续传。
--include
和--exclude
支持标准正则表达式的语法,您可以使用它来过滤出符合特定条件的文件。使用 zsh 时,您可能需要在 pattern 串的两端加上双引号。
snapshot-path 不要设置到为待迁移目录或其子目录。coscli 不会主动删除 snapshot-path 文件夹中的快照信息。为避免快照信息过多,请定期删除 snapshot-path 文件夹内无用的快照。
./coscli sync ~/test/ cos://bucket1/example/ -r --include ".*.txt" --snapshot-path=/path/snapshot-path --meta=x-cos-meta-a:a#ContentType:text#Expires:2022-10-12T00:00:00.000Z
sync 操作示例
同步上传文件 ./coscli sync ~/example.txt cos://bucket1/example.txt 同步下载文件 ./coscli sync cos://bucket1/example.txt ~/example.txt 桶内同步拷贝文件 ./coscli sync cos://bucket1/example.txt cos://bucket1/example_copy.txt 跨桶同步拷贝文件 ./coscli sync cos://bucket1/example.txt cos://bucket2/example_copy.txt
COSCLI 的通用选项
选项 | 说明 |
---|---|
-h, –help | 输出帮助信息,用户可通过 -h 或 –help 命令来查看工具的 help 信息和用法。用户还可以在每个命令后(不加参数)输入 -h 查看该命令的具体用法,例如查看创建存储桶命令的具体用法,则输入coscli mb -h |
-c, –config-path | 配置文件路径,COSCLI 的默认配置文件路径为~/.cos.yaml ,同时支持用户自定义配置文件,在命令后使用-c 可指定配置文件 |
-e, –endpoint | 除了在配置文件中提前配置存储桶的地域外,COSCLI 也支持在命令中通过-e 指定存储桶的 endpoint,endpoint 形如cos..myqcloud.com ,其中``代表存储桶地域,如ap-guangzhou 、ap-beijing 等,COS 支持的地域列表可参见 地域与访问域名 |
-i, –sercret-id | 指定访问 COS 使用的密钥中的 SecretId |
-k, –sercret-key | 指定访问 COS 使用的密钥中的 SercretKey |
-t, –sesssion-token | 若用户通过临时密钥访问 COS,可通过-t 指定临时密钥中的 token |
-v, –version | 显示 COSCLI 的版本 |
示例
示例1:切换存储桶并上传对象 当用户需要通过 COSCLI 切换至另一个地域的存储桶时,可以通过 -e 选项指定该存储桶所属的 Endpoint。 如,将本地文件 test.txt 上传至成都地域的存储桶 examplebucket-1250000000,成都读取的 endpoint 为 cos.ap-chengdu.myqcloud.com,命令如下: ./coscli cp test.txt cos://examplebucket-1250000000/test.txt -e cos.ap-chengdu.myqcloud.com 示例2:切换用户账号查看文件列表 当用户需要使用另一个账号的身份时,也可以通过 -i 和 -k 选项分别指定用户密钥的 SecretId 和 SecretKey。 如,使用另一个账号的身份列出成都地域下的存储桶 examplebucket-1250000000 的文件列表,命令如下: ./coscli ls cos://examplebucket-1250000000 -e cos.ap-chengdu.myqcloud.com -i AKIDYv3vWrwkHXVDfqkNjoc9PP8anjOm**** -k 4rNbYF1XmmVw67rKWTBernUu66u****
coscmd工具
coscmd使用示例
#配置cos客户端认证信息 coscmd config -a ${COS_SECRET_ID} -s ${COS_SECRET_KEY} -b ${COS_BUCKET_NAME} -r ${COS_BUCKET_REGION} #上传文件目录到cos对象存储桶里 coscmd upload -r ${COS_UPLOAD_FROM_PATH}/dist /${COS_UPLOAD_FOLDER_NAME}/dist