copy-object用于拷贝同一地域下相同或不同存储空间(Bucket)之间的文件(Object)。
注意事项
阿里云账号默认拥有设置和获取Object的权限。如果您需要通过RAM用户或者STS的方式进行设置和获取,您必须拥有
oss:PutObject
和oss:GetObject
权限。具体操作,请参见为RAM用户授权自定义的权限策略。如果需要恢复Object的早期版本为当前版本,您只需将Object的早期版本拷贝到同一个Bucket中,OSS会将该Object对应的早期版本置为当前版本。
如果源Bucket和目标Bucket相同,则Object的大小无限制。如果源Bucket和目标Bucket不同,则建议拷贝小于1 GB的Object。当您需要拷贝大于1 GB的Object时,请使用upload-part-copy。
如果源Object为软链接,则只拷贝软链接,无法拷贝软链接指向的文件内容。
命令格式
ossutil api copy-object --bucket value --key value --copy-source value [flags]
参数 | 类型 | 说明 |
--bucket | string | Bucket名称。 |
--key | string | Object的完整路径。 |
--forbid-overwrite | string | 指定CopyObject操作时是否覆盖同名目标Object。 |
--copy-source | string | 拷贝源地址(必须有可读权限),其格式为: |
--copy-source-if-match | string | 如果源Object的ETAG值和用户提供的ETAG相等,则执行拷贝操作;否则返回412 HTTP错误码(预处理失败)。 |
--copy-source-if-modified-since | string | 如果指定的时间早于实际修改时间,则正常传送文件,并返回200 OK;否则返回304 not modified。 |
--copy-source-if-none-match | string | 如果传入的ETag值和Object的ETag不匹配,则正常传输文件,并返回200 OK;否则返回304 Not Modified。 |
--copy-source-if-unmodified-since | string | 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误 |
--metadata | stringArray | 指定对象的用户元数据,使用key=value格式,如需要自定义携带的元数据,需配置以x-oss-meta-*为前缀的参数。 |
--metadata-directive | string | 指定如何设置目标Object的元信息。 |
--object-acl | string | 指定Object的访问权限。 |
--server-side-encryption | string | 指定服务器端加密方式。 |
--server-side-encryption-key-id | string | 表示KMS托管的用户主密钥。 |
--storage-class | string | 指定Object的存储类型。 |
--tagging | string | 指定Object的标签。 |
--tagging-directive | string | 指定如何设置目标Object的对象标签。 |
copy-object命令对应API接口CopyObject。关于API中的具体参数含义,请参见CopyObject。
关于支持的全局命令行选项,请参见支持的全局命令行选项。
使用示例
拷贝
srcBucket
存储空间下的srcObject到examplebucket
存储空间下的exampleobject。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /srcBucket/srcObject
拷贝
examplebucket
存储空间下的srcObject到exampleobject。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject
拷贝
examplebucket
存储空间下的srcObject到exampleobject,以JSON格式显示。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --output-format json
拷贝
examplebucket
存储空间下的srcObject到exampleobject,以YAML格式显示。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --output-format yaml
拷贝
examplebucket
存储空间下的srcObject到exampleobject并禁止覆盖同名目标Object。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --forbid-overwrite true
拷贝
examplebucket
存储空间下的srcObject到exampleobject,如果srcObject的ETag等于123则执行拷贝。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --copy-source-if-match 123
拷贝
examplebucket
存储空间下的srcObject到exampleobject,如果srcObject的修改时间早于 Mon, 11 May 2020 08:16:23 GMT则执行拷贝。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --copy-source-if-unmodified-since "Mon, 11 May 2020 08:16:23 GMT"
拷贝
examplebucket
存储空间下的srcObject到exampleobject,忽略源srcObject的元数据,直接采用请求中指定的元数据。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --metadata-directive REPLACE --metadata user=aliyun --metadata email=ali***@aliyuncs.com
拷贝
examplebucket
存储空间下的srcObject到exampleobject,指定object服务器端加密方式。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --server-side-encryption KMS --server-side-data-encryption SM4 --server-side-encryption-key-id 9468da86-3509-4f8d-a61e-6eab1eac****
拷贝
examplebucket
存储空间下的srcObject到exampleobject,忽略源Object的对象标签,直接采用请求中指定的对象标签。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --tagging-directive Replace --tagging "TagA=A&TagB=B"
拷贝
examplebucket
存储空间下的srcObject到exampleobject,指定object的访问权限以及存储类型。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --object-acl private --storage-class IA