返回顶部

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 NameAPP 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 值相同则不进行传输

  • 有关 bucketAlias 的说明,请参见 下载与安装配置
  • 关于此命令的其他通用选项(例如切换存储桶、切换用户账号等),请参见 通用选项 文档。

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 文件夹内无用的快照。

    1. ./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-guangzhouap-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

 

posted @ 2022-11-16 17:58  九尾cat  阅读(507)  评论(0编辑  收藏  举报