拷贝文件(Object)是指在不改变文件内容的情况下,将同一地域下的源存储空间(Bucket)内的文件复制到目标Bucket,或者将文件复制到相同存储空间(Bucket)的其他目录。您可以通过ossutil的cp完成拷贝。
注意事项
要拷贝文件,您必须具有
oss:GetObject
、oss:ListObjects
和oss:PutObject
权限。具体操作,请参见为RAM用户授权自定义的权限策略。只支持拷贝对象,不支持拷贝未合并的分片。
默认同时复制标签和对象属性。可以使用--copy-props选项设置属性和标签的复制规则。
命令格式
ossutil cp oss://src_bucket[/src_prefix] oss://dest_bucket[/dest_prefix] [flags]
参数 | 类型 | 说明 |
src_bucket | string | 源Bucket名称。 |
src_prefix | string | 源Bucket下的某个文件目录或指定前缀。 |
dest_bucket | string | 目标Bucket名称。 |
dest_prefix | string | 目标Bucket下的某个文件目录或指定前缀。 |
--acl | string | 对象的访问权限。取值:
|
--bigfile-threshold | int | 开启大文件分片上传、下载或拷贝的阈值(默认值104857600)。 |
--cache-control | string | 指定该对象被下载时网页的缓存行为。 |
--checkers | int | Number of checkers to run in parallel (缺省值 16) |
--checkpoint-dir | string | 断点续传信息的指定目录(默认值 |
--checksum | / | 仅拷贝文件大小和校验和(如果存在)不一致的源文件,仅当对象间拷贝有效。 |
--content-disposition | string | 指定对象的展示形式。 |
--content-encoding | string | 声明对象的编码方式。 |
--content-type | string | 对象的内容类型。 |
--copy-props | string | 用于设置对象间拷贝时的属性和标签复制规则,支持以下三种设置:
|
-d, --dirs | string | 返回当前目录下的文件和子目录,而非递归显示所有子目录下的所有文件。 |
--encoding-type | string | 输入的对象名或文件名的编码方式。取值:url。 |
--end-with | string | 按字母排序,返回设定值之前的对象,包含设定值。 |
--exclude | stringArray | 路径或文件名的排除规则。 |
--exclude-from | stringArray | 从规则文件里读取排除规则。 |
--expires | stringArray | 指定缓存内容的绝对过期时间。 |
--files-from | stringArray | 从文件中读取源文件名列表,忽略空行或注释行。 |
--files-from-raw | stringArray | 从文件中读取源文件名列表。 |
--filter | stringArray | 路径或文件名过滤规则。 |
--filter-from | stringArray | 从规则文件读取过滤规则。 |
-f, --force | / | 强制操作,不进行询问提示。 |
--include | stringArray | 路径或文件名的包含规则。 |
--include-from | stringArray | 从规则文件里读取包含规则。 |
-j, --job | int | 多文件操作时的并发任务数(默认值3)。 |
--list-objects | / | 使用ListObjects接口列举对象。 |
--max-age | Duration | 不传输任何比此更早的文件。默认是秒,或单位后缀形式 ms|s|m|h|d|w|M|y(默认值off)。 |
--max-mtime | Time | 不传输任何比此更新的文件,UTC时间格式 (默认值off)。 |
--max-size | SizeSuffix | 限制传输的最大文件大小,默认是字节,或单位后缀形式B|K|M|G|T|P,1K(KiB)=1024B。 |
--metadata | strings | 指定对象的用户元数据,使用key=value格式。 |
--metadata-directive | string | 指定如何设置目标对象的元数据。取值:
|
--metadata-exclude | stringArray | 对象元数据的排除规则。 |
--metadata-filter | stringArray | 对象元数据过滤规则。 |
--metadata-filter-from | stringArray | 从规则文件读取对象元数据过滤规则。 |
--metadata-include | stringArray | 对象元数据的包含规则。 |
--min-age | Duration | 不传输任何比此更新的文件。默认是秒,或单位后缀形式 ms|s|m|h|d|w|M|y(默认值为off)。 |
--min-mtime | Time | 不传输任何比此更早的文件,UTC时间格式(默认值off)。 |
--min-size | SizeSuffix | 限制传输的最小文件大小,默认是字节,或单位后缀形式B|K|M|G|T|P,1K(KiB)=1024B。 |
--no-progress | / | 不现显示度条。 |
--page-size | int | 返回对象或文件的最大数(默认值1000),取值范围1~1000。 |
--parallel | int | 单文件内部操作的并发任务数。 |
--part-size | SizeSuffix | 分片大小,默认情况下根据文件大小自行计算合适的分片大小值。取值范围100Ki~5Gi。 |
-r, --recursive | / | 递归进行操作。当指定该选项时,命令会对存储空间下所有符合条件的对象进行操作,否则只对路径指定的对象进行操作。 |
--request-payer | string | 请求的支付方式,如果为请求者付费模式,请设置该值。取值:requester。 |
--size-only | / | 仅拷贝文件大小不一致的源文件。 |
--start-after | string | 按字母排序,返回设定值之后的对象,不包含设定值。 |
--storage-class | string | 对象的存储类型, 取值:
|
--tagging | strings | 指定对象的标签,使用key=value格式。 |
--tagging-directive | string | 指定如何设置目标对象的标签。取值:
|
-u, --update | / | 仅拷贝源文件新于目标文件。 |
--ignore-existing | / | 跳过已存在的目标文件。 |
关于支持的全局命令行选项,请参见支持的全局命令行选项。
目标文件命名规则如下:
单文件复制时,如果dest_prefix为空,则对象的名字为源文件相对路径。
单文件复制时,如果dest_prefix以"/"结尾,则对象的名字为dest_prefix + 源文件相对路径。
单文件复制时,如果dest_prefix不以"/"结尾, 则与dest_prefix保持一致。
批量复制时,如果dest_prefix以"/"结尾,则对象的名字为dest_prefix + 源文件相对路径。
批量复制时,如果dest_prefix不以"/"结尾,则对象的名字为dest_prefix + "/" +源文件相对路径。
使用示例
拷贝单个文件
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/desfolder/
拷贝增量文件
批量拷贝时,如果指定--update选项,只有当目标文件不存在,或源文件的最后修改时间晚于目标文件时,ossutil才会执行拷贝操作。命令如下:
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/desfolder/ -r --update
该选项可用于当批量拷贝失败重传时,跳过已经拷贝成功的文件,实现增量拷贝。
重命名文件
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/example.txt
通过cp命令重命名文件时,原文件仍存在,您可以在重命名后删除原文件。
修改文件对象标签
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"