cp命令用于上传、下载、拷贝文件。

说明 本文命令均以Linux系统为例,实际使用时,请将命令名称改为您实际可执行程序文件的名称。例如Windows 32位系统的帮助命令为ossutil32.exe help

命令格式

  • 上传文件
    ./ossutil cp file_url cloud_url  [-r] [-f] [-u] [--enable-symlink-dir] [--disable-all-symlink] [--only-current-dir] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=cdir] [--snapshot-path=sdir] [--payer requester] [--tagging]
    使用cp命令将本地文件上传至OSS,其中:
    • file_url:本地文件路径。例如Linux系统文件路径/localfolder/examplefile.txt;Windows系统文件路径D:\localfolder\examplefile.txt
    • cloud_url:OSS文件路径,格式为oss://bucketname/objectname。例如oss://examplebucket/examplefile.txt
  • 下载文件
    ./ossutil cp cloud_url file_url  [-r] [-f] [-u] [--only-current-dir] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=cdir] [--range=x-y] [--payer requester] [--version-id versionId]
  • 拷贝文件
    ./ossutil cp cloud_url cloud_url [-r] [-f] [-u] [--only-current-dir] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=cdir] [--payer requester] [--version-id versionId] [--tagging]

使用示例

性能调优

cp命令中,通过--jobs项和--parallel项可控制并发数。当ossutil自行设置的默认并发达不到用户的性能需求时,您可以自行调整这两个选项来升降性能。
  • --jobs:控制文件批量上传、下载、拷贝时的并发数。
  • --parallel:控制分片上传、下载、拷贝时,分片的并发数。
默认情况下,ossutil会根据文件大小来计算parallel个数。当进行批量大文件的上传、下载、拷贝时,实际的并发数为jobs个数乘以parallel个数。
  • 当ECS虚拟机或者服务器在网络、内存、CPU等资源不是特别大的情况下,建议将并发数调整到100以下。如果网络、内存、CPU等资源没有占满,可以适当增加并发数。
  • 如果并发数调得太大,由于线程间资源切换及抢夺等,ossutil上传、下载、拷贝性能可能会下降。并发数过大可能会产生EOF错误。所以请根据实际的机器情况调整--jobs--parallel选项的数值。如果要进行压测,可在一开始时调低这两项数值,然后逐渐调大直至找到最优值。

常用选项

您可以在使用cp命令时附加如下选项:
选项名称 描述
-r,--recursive 递归进行操作。当指定该选项时,命令会对Bucket下所有符合条件的Object进行操作,否则只对指定的单个Object进行操作。
-f,--force 强制操作,不进行询问提示。
-u,--update 只有当目标文件不存在,或源文件的最后修改时间晚于目标文件时,ossutil才会执行上传、下载、拷贝操作。
--output-dir 指定输出文件所在的目录,输出文件目前包含:cp命令批量拷贝文件出错时所产生的report文件。默认值为:当前目录下的ossutil_output目录。
--bigfile-threshold 开启大文件断点续传的文件大小阈值,单位为Byte,默认值:100MByte,取值范围:0~9223372036854775807。
--part-size 分片大小,单位为Byte。默认情况下ossutil根据文件大小自行计算合适的分片大小值。如果有特殊需求或者需要性能调优,可以设置该值,取值范围:1~9223372036854775807。
--checkpoint-dir checkpoint目录的路径(默认值为:.ossutil_checkpoint),断点续传操作失败时,ossutil会自动创建该目录,并在该目录下记录checkpoint信息,操作成功会删除该目录。如果指定了该选项,请确保所指定的目录可以被删除。
--range 下载文件时,可以指定文件内容的字节范围进行下载,字节从0开始编号。
  • 可以指定一个区间,例如3-9表示从第3个字节到第9个字节(包含第3和第9字节)。
  • 可以指定从什么字段开始,例如3-表示从第3个字节开始到文件结尾(包含第3个字节)。
  • 可以指定从什么字段结束,例如-9表示从0字节到第9个字节(包含第9个字节)。
--encoding-type 输入或者输出的文件名的编码方式,目前只支持URL编码,即指定该选项时,取值为url。如果不指定该选项,则表示文件名未经过编码。Bucket名不支持URL编码。
--include 包含对象匹配模式,例如:*.jpg。
--exclude 不包含对象匹配模式,例如:*.txt。
--meta 设置Object的meta为[header:value#header:value...],例如:Cache-Control:no-cache#Content-Encoding:gzip。详情请参见set-meta
--acl 设置Object的访问权限。取值为:
  • default(默认):继承Bucket
  • private:私有
  • public-read:公共读
  • public-read-write:公共读写
--snapshot-path 批量上传、下载时,若指定--snapshot-path选项,ossutil在指定的目录下生成文件上传、下载的快照信息,在下一次指定该选项上传、下载时,ossutil会读取指定路径下的快照信息进行增量上传、下载。详情请参见上传并生成快照
--disable-crc64 该选项关闭CRC64,默认情况下,ossutil进行数据传输都打开CRC64校验。
--maxupspeed 最大上传速度,单位:KB/s,缺省值为0(不受限制)。
--payer 请求的支付方式,如果为请求者付费模式,可以将该值设置成requester。
--partition-download 分区下载使用。一个ossutil命令下载一个分区,其值格式为“分区编号:总分区数”,例如1:5,表示当前ossutil下载分区1,总共有5个分区。分区编号从1开始,Object的分区规则由工具内部算法决定。利用该选项,将待下载的Object分成多个区,可以由多个ossutil命令同时下载,每个ossutil命令下载各自的分区,多个ossutil命令可以并行在不同机器上执行。
-j,--jobs 多文件操作时的并发任务数,默认值:3,取值范围:1~10000。
--parallel 单文件内部操作的并发任务数,取值范围:1~10000,默认将由ossutil根据操作类型和文件大小自行决定。
--loglevel 设置日志级别,默认为空,表示不输出日志文件。可选值为:
  • info:输出提示信息日志。
  • debug:输出详细信息日志(包括http请求和响应信息)。
--retry-times 当错误发生时的重试次数,默认值:10,取值范围:1~500。
--version-id 下载或拷贝时操作指定版本的文件,仅支持在已开启版本控制的Bucket内使用。
--proxy-host 网络代理服务器的URL地址,支持HTTP、HTTPS、SOCKS5。例如http://120.79.**.**:3128socks5://120.79.**.**:1080
--proxy-user 网络代理服务器的用户名,默认为空。
--proxy-pwd 网络代理服务器的密码,默认为空。
--local-host 工具的本地IP地址。当您的电脑有多个IP地址的时候,您可以指定此项,ossutil将通过指定IP访问OSS。
--enable-symlink-dir 表示上传链接子目录,默认不上传。probe命令可以探测是否存在死循环链接文件或者目录。
--only-current-dir 表示只上传、下载、拷贝当前目录下的文件,忽略掉当前目录下的子目录。
--disable-dir-object 表示上传文件时不为目录生成OSS对象。
--disable-all-symlink 上传时忽略所有的符号链接子文件以及符号链接子目录。
--tagging 上传或复制文件时设置文件的对象标签,格式为"abc=1&bcd=2&……"
--disable-ignore-error 批量操作时候不忽略错误。
说明 更多通用选项请参见查看选项