拷贝对象即复制Bucket中的文件。在有些情况下,您可能需要仅仅只是将一些Object从一个Bucket复制到另外一个Bucket,不改变内容。这种情况一般的做法是将Object重新下载然后上传。但是因为数据实际上都是一样的,因此浪费了很多网络带宽。因此OSS提供了CopyObject的功能来实现OSS的内部拷贝,这样在用户和OSS之间就无需传输大量的数据。
另外,由于OSS不提供重命名功能,因此如果需要对Object进行重命名的话,最佳的方法就是调用OSS的CopyObject接口先将原来的数据拷贝成新的文件名,然后删除原Object。如果用户仅仅是需要修改某个Object的一些Object Meta信息,同样可以调用CopyObject的接口,将源Object地址和目标Object地址设置成相同的,这样OSS就会仅更新该Object Meta信息。Object Meta信息可以参考Object Meta。
该操作有以注意事项:
- 您需要有源Object的操作权限,否则会无法完成操作。
- 该操作不支持跨Region拷贝数据。比如:不支持将杭州Bucket里的Object拷贝到青岛。
- 该操作支持的最大Object大小为1GB。
- 该操作不能对追加上传产生的Object进行拷贝。
功能使用参考:
- API:Copy Object
- SDK:Java SDK-Object
拷贝大文件
当用户的Object很大的时候,就必须采用其他的方法来完成。和上传操作一样,OSS提供了类似断点续传上传的功能来完成大文件的拷贝。
基本操作步骤和断点续传上传内描述的基本一致,唯一需要注意的就是将UploadPart替换成UploadPartCopy。
UploadPartCopy的语义和UploadPart基本一致,只是数据源从HTTP请求直接上传改成从源Object中获取。
功能使用参考:
- API:UploadPartCopy
- SDK:Java SDK-拷贝大文件