cp 命令用于上传、下载或拷贝文件。
注意:更多授权请参见 支持 CAM 的业务接口。
一、命令格式
cp 命令包含以下参数:
| 参数格式 | 参数用途 | 示例 |
| source_path | 源文件路径。可以为本地路径或 COS 文件路径。COS 路径支持使用 配置参数 中的桶别名,或桶名称进行访问。如使用桶名称访问,需要额外携带 endpoint flag | 本地路径:~/example.txt使用桶别名指定 COS 文件路径:cos://bucketalias/example.txt使用桶名称指定 COS 文件路径:cos://examplebucket-1250000000/example.txt |
| destination_path | 目的文件路径。可以为本地路径或 COS 文件路径。COS 路径支持使用 配置参数 中的桶别名,或桶名称进行访问。如使用桶名称访问,需要额外携带 endpoint flag | 本地路径:~/example.txt使用桶别名指定 COS 文件路径:cos://bucketalias/example.txt使用桶名称指定 COS 文件路径:cos://examplebucket-1250000000/example.txt |
cp 命令包含以下可选 flag:
| flag 简写 | flag 全称 | flag 用途 |
| 无 | –include | 包含特定模式的文件(v1.0.4之前的版本在上传时仅筛选传入路径下的本地文件路径,v1.0.4以及之后版本会筛选传入的全路径)例如:需要上传./test 下的所有文件到 COS,./test 下包含 aaa 文件夹,aaa 文件夹下包含1.txt 文件1.0.4之前的版本会匹配 aaa/1.txt1.0.4及之后版本会匹配 ./test/aaa/1.txt |
| 无 | –exclude | 排除特定模式的文件(v1.0.4之前的版本在上传时仅筛选传入路径下的本地文件路径,v1.0.4以及之后版本会筛选传入的全路径)例如:需要上传./test 下的所有文件到 COS,./test 下包含 aaa 文件夹,aaa 文件夹下包含1.txt 文件1.0.4之前的版本会匹配 aaa/1.txt1.0.4及之后版本会匹配 ./test/aaa/1.txt |
| -r | –recursive | 是否递归遍历文件夹下所有文件 |
| 无 | –storage-class | 指定上传文件的存储类型(默认 STANDARD),更多存储类型,请参见 存储类型概述 |
| 无 | –part-size | 文件的分块大小,单位为MB,默认值为32,最大支持5120。如果需要根据文件大小自适应分块大小,请设置为0 |
| 无 | –thread-num | 文件分块并发线程数(默认并发5),设置(>0)时覆盖按文件大小的自动推导,并忽略 –max-thread-num |
| 无 | –max-thread-num | 当 –thread-num 为 0(自动推导分片并发)时的并发上限,默认 32;–thread-num 显式设置时本参数无效 |
| 无 | –rate-limiting | 单链接速率限制(0.1~100MB/s),单位MB/s |
| 无 | –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 |
| 无 | –routines | 指定文件间并发上传或下载的线程数量,默认为3 |
| 无 | –fail-output | 此选项决定是否启用上传或下载失败时文件的错误输出(默认为true,开启)。如果启用,文件传输失败将被记录在指定目录内(如果没有指定,默认为./coscli_output)。如果禁用,只会将错误文件的数量输出到控制台 |
| 无 | –fail-output-path | 此选项用于指定记录上传或下载失败文件的错误输出文件夹。通过提供自定义文件夹路径,你可以控制错误输出文件夹的位置和名称。如果未设置此选项,将使用默认的错误日志文件夹./coscli_output |
| 无 | –retry-num | 限频重试次数(默认为0,不重试)。可选1-10次。当多台机器同时在同一个 COS 目录上执行下载操作时,可以通过指定此参数进行重试来规避限频错误 |
| 无 | –err-retry-num | 错误重试次数(默认为5)。指定1-10次,或者设置为0表示不进行重试 |
| 无 | –err-retry-interval | 重试间隔(仅在指定–err-retry-num为1-10时可用)。指定1-10秒的重试间隔,如果不指定或设置为0,每次重试间隔将在1-10秒内的随机值 |
| 无 | –only-current-dir | 是否仅上传当前目录中的文件,忽略子目录及其内容(默认为 false,不忽略) |
| 无 | –disable-all-symlink | 是否上传时忽略所有软链接子文件和软链接子目录(默认为 true,不上传)。目前仅支持在 Linux 和 macOS 系统上使用 |
| 无 | –enable-symlink-dir | 是否上传软链接的子目录(默认为 false,不上传)。目前仅支持在 Linux 和 macOS 系统上使用 |
| 无 | –disable-crc64 | 是否关闭 CRC64数据验证(默认为 false,启用验证) |
| 无 | –disable-checksum | 默认为 true ,仅校验分片 crc64。当设置为 false,将校验整个文件的 crc64。(coscli V1.0.6以及之前版本默认为 false) |
| 无 | –move | 会在文件成功拷贝到目标路径后,删除源文件(仅 cos 路径间可用) |
| 无 | –version-id | 下载或复制指定版本的文件,仅支持在已开启版本控制的 Bucket 内使用(仅支持单文件) |
| 无 | –process-log | 是否开启进程日志,默认为 true,开启 |
| 无 | –process-log-path | 此选项用于指定一个专用的输出文件夹来存储进程日志。日志将记录与文件上传或下载相关的信息,包括错误日志、正常执行日志、重试等详情。通过提供一个自定义的文件夹路径,你可以控制日志输出文件夹的位置和名称。如果未设置此选项,则将使用默认的日志文件夹(coscli_output)。 |
| 无 | –skip-dir | 默认为 false,当设置为 true 时传输跳过文件夹。 |
| 无 | –acl | 设置文件的 ACL,例如 private,public-read |
| 无 | –grant-read | 赋予被授权者读取对象的权限,格式为 id="[OwnerUin]",例如 id="100000000001",可使用半角逗号(,)分隔多组被授权者,例如 id="100000000001",id="100000000002"。 |
| 无 | –grant-read-acp | 赋予被授权者读取对象的访问控制列表(ACL)的权限,格式为 id="[OwnerUin]",例如 id="100000000001",可使用半角逗号(,)分隔多组被授权者,例如 id="100000000001",id="100000000002"。 |
| 无 | –grant-write-acp | 赋予被授权者写入对象的访问控制列表(ACL)的权限,格式为 id="[OwnerUin]",例如 id="100000000001",可使用半角逗号(,)分隔多组被授权者,例如 id="100000000001",id="100000000002"。 |
| 无 | –grant-full-control | 赋予被授权者操作对象的所有权限,格式为 id="[OwnerUin]",例如 id="100000000001",可使用半角逗号(,)分隔多组被授权者,例如 id="100000000001",id="100000000002"。 |
| 无 | –tags | 对象的标签集合,最多可设置10个标签(例如,–tags="Key1=Value1&Key2=Value2") |
| 无 | –forbid-overwrite | 针对未开启版本控制的存储桶,上传文件时,用于指定上传操作时是否禁止覆盖同名对象:指定为 false 时,默认覆盖同名 Object。指定为 true 时,表示禁止覆盖同名 Object。当存储桶的版本控制是开启状态时,x-cos-forbid-overwrite 请求头部设置无效,即允许覆盖同名对象。 |
| 无 | –encryption-type | 服务端加密方式(SSE-COS/SSE-C)。 |
| 无 | –server-side-encryption | 服务端加密算法,支持 AES256、cos/kms。使用 SSE-COS 或 SSE-KMS 时,此字段为必选项 |
| 无 | –sse-customer-algo | 服务端加密算法,支持 AES256。使用 SSE-C 时,此字段为必选项。 |
| 无 | –sse-customer-key | 服务端加密密钥的 Base64编码。例如 MDEyMzQ1Njc4OUFCQ0RFRjAxMjM0NTY3ODlBQkNERUY=。使用 SSE-C 时,此字段为必选项。 |
| 无 | –sse-customer-key-md5 | 服务端加密密钥的 MD5哈希值,使用 Base64编码。例如 U5L61r7jcwdNvT7frmUG8g==。使用 SSE-C 时,此字段为必选项 |
| 无 | –check-point | 是否开启断点续传,默认为 true,开启断点续传 |
注意:说明:
注意:./coscli cp ~/test/ cos://bucket1/example/ -r –include ".*\\.txt$" –meta=x-cos-meta-a:a#ContentType:text#Expires:2022-10-12T00:00:00.000Z
四、上传单文件
./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$"
八、将本地 test 文件夹及其子文件夹下的所有非 .md 和 非 .html 类型文件上传至 bucket1桶中的 example 文件夹下
./coscli cp ~/test/ cos://bucket1/example/ -r –exclude ".*\\.html$|.*\\.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
十一、将本地的 file.txt 文件上传至 bucket1桶并设置单链接速率限制为1.3MB/s
./coscli cp ~/file.txt cos://bucket1/file.txt –rate-limiting 1.3
十三、下载单文件
./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$"
十七、将 bucket1桶中的 example 文件夹及其子文件夹下所有非 .md 和 非 .html 类型文件下载至本地 test 文件夹
./coscli cp cos://bucket1/example/ ~/test/ -r –exclude ".*\\.html$|.*\\.md$"
十八、将 bucket1桶中的 example.txt 文件的 xxx 版本下载至本地 test 目录下
./coscli cp cos://bucket1/example.txt ~/test/ –version-id xxx
20、桶内拷贝单文件
./coscli cp cos://bucket1/example.txt cos://bucket1/example_copy.txt
21、跨桶拷贝单文件
./coscli cp cos://bucket1/example.txt cos://bucket2/example_copy.txt
22、将 bucket1桶中 example1文件夹下的所有文件及所有文件夹拷贝至 bucket2桶中 example2文件夹下
./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r
23、将 bucket1桶中 example1文件夹下及其子文件夹下的所有 .mp4类型文件拷贝至 bucket2桶中 example2文件夹下
./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r –include ".*\\.mp4$"
24、将 bucket1桶中的 example1文件夹下及其子文件夹下所有非 .md 类型文件拷贝至 bucket2桶中 example2文件夹下
./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r –exclude ".*\\.md$"
25、将 bucket1桶中的 example.txt 文件的 xxx 版本拷贝至 bucket2桶中
./coscli cp cos://bucket1/example.txt cos://bucket2/ –version-id xxx
26、将 bucket1桶中的 test 文件夹移动至 bucket2桶中
./coscli cp cos://bucket1/test/ cos://bucket2/test/ –move -r