此操作用来创建一个存储在OOS里的文件拷贝。类似于执行一个GET,然后再执行一次PUT。要执行拷贝请求,用户需要对源文件有读权限,对目标Bucket有写权限。
注意当OOS接收到请求或者正在执行拷贝操作时,拷贝操作可能会返回失败。如果在拷贝操作开始之前出现异常,OOS返回标准的错误信息。如果在拷贝操作过程中出现异常,由于200 OK状态码是先返回的,这意味着200 OK响应体可能包含成功或错误。请在客户端应用程序中解析响应体的内容并进行适当处理。
请求语法
PUT /destinationObject HTTP/1.1
Host: BucketName.oos-cn.ctyunapi.cn
x-amz-copy-source: /source_bucket/sourceObject
x-amz-metadata-directive: metadata_directive
x-amz-copy-source-if-match: etag
x-amz-copy-source-if-none-match: etag
x-amz-copy-source-if-unmodified-since: time_stamp
x-amz-copy-source-if-modified-since: time_stamp
x-amz-meta-paramater: value
Authorization: SignatureValue
Date: date
请求头
名称 描述 是否必须 x-amz-copy-source 源Bucket和文件的名称,用斜杠(/)分割。
类型:字符串。
是 x-amz-metadata-directive 指明元数据是源文件的拷贝或者元数据被请求头提供的元数据覆盖。
类型:字符串。
取值:
COPY:除存储类型(x-amz-storage-class)、数据位置(x-ctyun-data-location)外的其他元数据保持不变,拷贝源文件的元数据。
REPLACE:所有原始元数据都被指定的元数据覆盖。
默认值为COPY。
注意如果取值为COPY,源文件和目的文件相同,则必须携带x-amz-storage-class,否则不能拷贝,返回400错误码。
否 x-amz-copy-source-if-match 只有当源文件的Etag与给定Etag匹配时,才能执行文件拷贝操作,否则返回412 HTTP状态码错误。
类型:字符串。
否 x-amz-copy-source-if-none-match 只有当源文件的Etag与给定Etag不匹配时,才能执行文件拷贝操作,否则返回412 HTTP状态码错误。
类型:字符串。
否 x-amz-copy-source-if-unmodified-since 只有源文件在指定时间点之后没有修改,才执行文件拷贝操作,否则返回412错误。
类型:字符串。
取值:格式为EEE, d MMM yyyy HH:mm:ss 'GMT'。
否 x-amz-copy-source-if-modified-since 只有源文件在指定时间点之后修改过,才执行文件拷贝操作,否则返回412错误。
类型:字符串。
取值:格式为EEE, d MMM yyyy HH:mm:ss 'GMT'。
否 x-amz-storage-class 目标文件的存储类型。
类型:字符串。
取值:
STANDARD:标准存储。
STANDARD_IA:低频访问存储
默认值为STANDARD。
否 x-ctyun-data-location 设置数据存储的位置。
注意香港节点不支持此参数。
类型:字符串。
取值:
格式为:type=Local,scheduleStrategy=scheduleStrategy或者type=Specified,location=location,scheduleStrategy=scheduleStrategy
type:指定数据存储位置的类型,取值为Local或者Specified。Local表示就近写入,Specified表示指定位置。如果type取值为Specified,则需要指定具体的数据位置location,location可以填写多个,以逗号分隔,对于对象存储网络,可取值为:ChengDu、GuiYang、LaSa、LanZhou、QingDao、SH2、ShenYang、ShenZhen、SuZhou、WuHan、WuHu、WuLuMuQi、ZhengZhou;对于对象存储网络2,可取值为:NeiMeng1、HangZhou1。
scheduleStrategy:调度策略,取值为:
Allowed:允许OOS自动调度数据存储位置。
NotAllowed:不允许OOS自动调度数据存储位置。否 x-amz-meta-paramater 用户自定义的元数据,用户可以根据需要,自定义一些元数据的参数。
类型:字符串。
否
响应结果
名称 | 描述 |
---|---|
Content-Length | 响应体的长度。只有客户端携带Expect: 102-processing请求头,才会返回该响应头。 |
CopyObjectResult | 包含所有返回元素的容器。 类型:容器。 子节点:LastModified、Etag。 |
LastModified | 返回文件最后一次修改的日期。 类型:字符串。 父节点:CopyObjectResult。 |
ETag | 返回新文件的ETag。ETag只反映文件内容发生了改变,元数据未改变。 类型:字符串。 父节点:CopyObjectResult。 |
请求示例
将存储桶example-bucket中的文件1.txt复制一份到本存储桶,新文件命名为2.txt。
PUT /2.txt HTTP/1.1
Host: example-bucket.oos-dhv6.ctyunapi.cn
User-Agent: curl/7.68.0
Accept: */*
x-amz-date: 20210625T033636Z
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Content-Type: application/x-www-form-urlencoded; charset=utf-8
x-amz-copy-source: /testbucket001/1.txt
Content-Length: 0
Authorization: SignatureValue
响应示例
HTTP/1.1 200 OK
Date: Fri, 25 Jun 2021 03:37:22 GMT
x-amz-request-id: 28fcb1549c45469228746b7c827f82616880808d8876918e66
Content-Type: application/xml
Transfer-Encoding: chunked
Server: CTYUN
<CopyObjectResult>
<LastModified>2021-06-25T03:37:23.727Z</LastModified>
<ETag>eb733a00c0c9d336e65691a37ab54293</ETag>
</CopyObjectResult>