接口说明
版本控制
x-oss-copy-source
默认拷贝 Object 的当前版本,您可以在 x-oss-copy-source 中加入 versionId 来拷贝指定的 Object 版本。拷贝 Object 时,如果源 Object 的对应版本为删除标记,则返回 404 表示该 Object 不存在。- 如果需要恢复 Object 的早期版本为当前版本,您只需将 Object 的早期版本拷贝到同一个 Bucket 中,OSS 会将该 Object 对应早期版本置为当前版本。
- 如果目标 Bucket 已开启版本控制,OSS 将会为新拷贝的 Object 自动生成唯一的版本 ID,此版本 ID 将会在响应 Header 中的 x-oss-version-id 返回。如果目标 Bucket 未开启或者暂停了版本控制,OSS 将会为新拷贝的 Object 自动生成 version ID 为 null 的版本,且会覆盖原有 versionId 为 null 的版本。
使用限制
-
使用 CopyObject 接口时,Object 的大小限制说明如下:
-
如果源 Bucket 和目标 Bucket 相同,则 Object 的大小无限制。
-
如果源 Bucket 和目标 Bucket 不同,则建议拷贝小于 1 GB 的 Object。当您需要拷贝大于 1 GB 的 Object 时,请使用 UploadPartCopy 接口。
使用 CopyObject 或 UploadPartCopy 接口均要求对源 Object 有读权限。
-
-
在非版本控制的 Bucket 中,当调用 CopyObject 接口拷贝文件时,如果源 Object 与目标 Object 为同一个 Object,则 OSS 只修改源 Object 的元数据,不拷贝源 Object 的内容。
-
在版本控制的 Bucket 中,不支持拷贝通过追加上传方式生成的 Object。
-
如果源 Object 为软链接,则只拷贝软链接,无法拷贝软链接指向的文件内容。
计量计费
- 调用一次 CopyObject 接口会对源 Object 和目标 Object 所在的 Bucket 各增加一次 Get 请求次数。
- 调用 CopyObject 接口会对目标 Object 所在的 Bucket 增加相应的存储量。
- 调用 CopyObject 接口更改 Object 存储类型会涉及数据覆盖。例如低频访问 IA 创建后 10 天内被覆盖为标准存储 Standard,则会产生 20 天的低频访问不足规定时长容量费用。关于存储费用的更多信息,请参见**存储费用**。
请求语法
PUT /{key} HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
x-oss-copy-source: string
x-oss-forbid-overwrite: string
x-oss-copy-source-if-match: string
x-oss-copy-source-if-none-match: string
x-oss-copy-source-if-unmodified-since: string
x-oss-copy-source-if-modified-since: string
x-oss-metadata-directive: string
x-oss-server-side-encryption: string
x-oss-server-side-data-encryption: string
x-oss-server-side-encryption-key-id: string
x-oss-object-acl: string
x-oss-storage-class: string
x-oss-tagging: string
x-oss-tagging-directive: string
x-oss-meta-*: object
路径参数
字段名称 | 字段详情 |
---|---|
keystring | Object 完整路径。 示例值:exampledir/exampleobject.txt |
请求参数
字段名称 | 字段详情 |
---|---|
bucketstring | Bucket 名称。 示例值:oss-example |
x-oss-copy-sourcestring | 指定拷贝的源地址。展开详情 示例值:/oss-example/oss.jpg |
x-oss-forbid-overwritestring | 指定 CopyObject 操作时是否覆盖同名目标 Object。当目标 Bucket 处于已开启或已暂停版本控制状态时,x-oss-forbid-overwrite请求 Header 设置无效,即允许覆盖同名 Object。展开详情 示例值:true |
x-oss-copy-source-if-matchstring | 如果源 Object 的 ETag 值和您提供的 ETag 相等,则执行拷贝操作,并返回 200 OK。展开详情 示例值:5B3C1A2E053D763E1B002CC607C5**** |
x-oss-copy-source-if-none-matchstring | 如果源 Object 的 ETag 值和您提供的 ETag 不相等,则执行拷贝操作,并返回 200 OK。展开详情 示例值:5B3C1A2E053D763E1B002CC607C5**** |
x-oss-copy-source-if-unmodified-sincestring | 如果指定的时间等于或者晚于文件实际修改时间,则正常拷贝文件,并返回 200 OK。展开详情 示例值:2019-04-09T07:01:56.000Z |
x-oss-copy-source-if-modified-sincestring | 如果源 Object 在用户指定的时间以后被修改过,则执行拷贝操作。展开详情 示例值:2019-04-09T07:01:56.000Z |
x-oss-metadata-directivestring | 指定如何设置目标 Object 的元信息。展开详情 示例值:COPY |
x-oss-server-side-encryptionstring | 指定 OSS 创建目标 Object 时,服务器端熵编码加密算法 。展开详情 示例值:AES256 |
x-oss-server-side-data-encryptionstring | 指定 Object 的加密算法。如果未指定此选项,表明 Object 使用 AES256 加密算法。此选项仅当 x-oss-server-side-encryption 为 KMS 时有效。 示例值:SM4 |
x-oss-server-side-encryption-key-idstring | 表示 KMS 托管的用户主密钥。展开详情 示例值:9468da86-3509-4f8d-a61e-6eab1eac**** |
x-oss-object-aclstring | 指定 OSS 创建 Object 时的访问权限。展开详情 示例值:public-read枚举值:privatepublic-readpublic-read-writedefault |
x-oss-storage-classstring | Bucket 的存储类型。 取值范围如下:展开详情 示例值:Standard枚举值:ArchiveColdArchiveIAStandard |
x-oss-taggingstring | 指定 Object 的对象标签,可同时设置多个标签,例如 TagA=A&TagB=B。展开详情 示例值:a:1 |
x-oss-tagging-directivestring | 指定如何设置目标 Object 的对象标签。取值如下:展开详情 示例值:Copy |
x-oss-meta-*map<string> | 如果配置以 x-oss-meta-*为前缀的参数,则该参数视为元数据。展开详情 |
返回参数
字段名称 | 字段详情 |
---|---|
CopyObjectResultobject | 保存 CopyObject 结果的容器。 |
变更时间 | 变更内容概要 | 操作 | |
---|---|---|---|
2024-03-07 | 新增请求参数x-oss-server-side-data-encryption | ||
2024-02-21 | 变更返回参数 |