upload-part-copy用于从一个已存在的Object中拷贝数据来上传一个Part。
注意事项
当拷贝一个大于1 GB的文件时,必须使用upload-part-copy的方式进行拷贝。如果想通过单个操作拷贝小于1 GB的文件,请参见copy-object。
执行upload-part-copy的源Bucket地址和目标Bucket地址必须是同一个Region。
调用该接口上传Part数据前,必须先调用initiate-multipart-upload来获取一个OSS服务器生成的Upload ID。
权限说明
阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM Policy或Bucket Policy授予操作权限。
API | Action | 说明 |
UploadPartCopy |
| 从一个已存在的Object中拷贝数据来上传一个Part时,需要读取源Object的权限。 |
| 从一个已存在的Object中拷贝数据来上传一个Part时,需要写入目标Object的权限。 | |
| 从一个已存在的Object中拷贝数据来上传一个Part时,如果通过versionId指定Object的版本,需要读取源Object的指定版本的权限。 |
命令格式
ossutil api upload-part-copy --bucket value --key value --copy-source value --part-number value --upload-id value [flags]
参数 | 类型 | 说明 |
--bucket | string | Bucket名称。 |
--key | string | 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错误 |
--copy-source-range | string | 源Object的拷贝范围。 |
--metadata-directive | string | 指定如何设置目标Object的元信息。 |
--part-number | string | 每一个上传的Part都有一个标识它的号码(partNumber)。 |
--tagging | string | 指定Object的标签。 |
--tagging-directive | string | 指定如何设置目标Object的对象标签。 |
--upload-id | string | MultipartUpload事件的ID。 |
upload-part-copy命令对应API接口UploadPartCopy。关于API中的具体参数含义,请参见UploadPartCopy。
关于支持的全局命令行选项,请参见支持的全局命令行选项。
使用示例
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part,以JSON格式显示。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --output-format json
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part,以YAML格式显示。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --output-format json
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part,拷贝范围是0-9。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --copy-source-range bytes=0-9
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part,如果srcObject的ETag 等于 123 则执行拷贝。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --copy-source-if-match 123
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part,如果srcObject的修改时间早于 Mon, 11 May 2020 08:16:23 GMT 则执行拷贝。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --copy-source-if-unmodified-since "Mon, 11 May 2020 08:16:23 GMT"
从已存在srcbucket里srcobject的当前版本中拷贝数据来上传一个Part,忽略源Object的对象标签,直接采用请求中指定的对象标签。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --tagging-directive Replace --tagging "TagA=A&TagB=B"