上传下载或拷贝文件 - cp

最近更新时间:2024-10-22 17:53:22

我的收藏
cp 命令用于上传、下载或拷贝文件。

命令格式

./coscli cp <source_path> <destination_path> [flags]
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
包含特定模式的文件
--exclude
排除特定模式的文件
-r
--recursive
是否递归遍历文件夹下所有文件
--storage-class
指定上传文件的存储类型(默认 STANDARD),更多存储类型,请参见 存储类型概述
--part-size
文件分块大小(默认32MB),单位MB
--thread-num
文件分块并发线程数(默认并发5)
--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
错误重试次数(默认为0)。指定1-10次,或者设置为0表示不进行重试。
--err-retry-interval
重试间隔(仅在指定--err-retry-num1-10时可用)。指定1-10秒的重试间隔,如果不指定或设置为0,每次重试间隔将在1-10秒内的随机。
--only-current-dir
是否仅上传当前目录中的文件,忽略子目录及其内容(默认为false,不忽略)
--disable-all-symlink
是否上传时忽略所有软链接子文件和软链接子目录(默认为true,不上传)
--enable-symlink-dir
是否上传软链接的子目录(默认为false,不上传)
--disable-crc64
是否关闭 CRC64 数据验证。(默认为false,启用验证)
--disable-checksum
默认为 false,校验整个文件的 crc64。为 true 时仅校验分片 crc64
说明:
cp 命令在上传和下载大文件时会自动启用并发上传/下载。
当文件大于 --part-size 时,COSCLI 会先将文件按 --part-size 进行切块,之后用 --thread-num 个线程并发地执行上传/下载任务。
每个线程都会维护一个链接,对于每个链接,您可以使用 --rate-limiting 参数对单链接进行限速,当启用并发上传/下载时,总速率为 --thread-num * --rate-limiting
当以分块形式上传/下载文件时,会默认开启断点续传。
--include--exclude 支持标准正则表达式的语法,您可以使用它来过滤出符合特定条件的文件。
使用 zsh 时,您可能需要在 pattern 串的两端加上双引号。
./coscli cp ~/test/ cos://bucket1/example/ -r --include ".*.txt" --meta=x-cos-meta-a:a#ContentType:text#Expires:2022-10-12T00:00:00.000Z
在windows cmd中使用命令时,需注意“——”字符(中文横杠)粘贴进cmd会自动变为“--”,需手动输入下。
关于此命令的其他通用选项(例如切换存储桶、切换用户账号等),请参见 通用选项 文档。

操作示例

上传操作

上传单文件

./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"

拷贝操作

桶内拷贝单文件

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