拷贝文件是指在不改变文件内容的情况下,将某个存储空间(Bucket)内的一些文件(Object)复制到另外一个 Bucket 中。
说明
- 1GB 以下的文件使用简单拷贝,OSS API 接口为 CopyObject。
- 1GB 以上的文件使用分片拷贝,OSS API 接口为 UploadPartCopy。
操作方式
操作方式 | 说明 |
---|---|
图形化工具 ossbrowser | 图形化工具,易操作
注意 仅可以用于拷贝 5GB 以下的文件。
|
命令行工具 ossutil | 命令行工具,性能好 |
Java SDK | 丰富、完整的各类语言 SDK demo |
Python SDK | |
PHP SDK | |
Go SDK | |
C SDK | |
.NET SDK | |
Android SDK | |
iOS SDK | |
Node.js SDK | |
Browser.js SDK | |
Ruby SDK |
使用场景
您可以在以下场景中使用拷贝文件功能:
- 备份 Object
当您需要将您的 Object 备份保存的时候,可以调用 CopyObject 接口,将 Object 拷贝至同地域的另一个 Bucket 中。
- 重命名 Object
由于 OSS 不提供重命名功能,如果您需要对 Object 进行重命名,可以调用 CopyObject 接口先将原来的 Object 拷贝后重新命名保存,之后删除源 Object。
- 修改 Object 的 meta 信息
如果您仅需要修改某个 Object 的 Meta 信息,同样可以调用 CopyObject 接口,将 Object 复制后保存在同样的位置,同时修改 meta 信息,这样 OSS 就会仅更新 Object Meta 信息。Object Meta 信息可以参考 Object Meta。
注意事项
拷贝文件时,有以下注意事项:
- 您需要有源 Object 的读取权限及目标 Bucket 的读写权限,否则会无法完成操作。
- 不支持跨 Region 拷贝数据。例如不支持将杭州 Bucket 里的 Object 拷贝到青岛的 Bucket 中。
- 不能对追加上传产生的 Object 进行拷贝。
- 拷贝文件时默认会覆盖同名文件, 为防止文件被意外覆盖,您可以通过以下方式保护您的文件。
- 开启版本控制功能
开启版本控制功能后,被删除或覆盖的文件会以历史版本的形式保存下来。您可以随时恢复历史版本文件。详情请参见版本控制介绍。
- 在拷贝请求中携带禁止覆盖同名文件的参数
在拷贝请求的 header 中携带 x-oss-forbid-overwrite,并指定其值为 true。当您拷贝的文件在目的端存在同名文件时,该文件会拷贝失败,并返回
FileAlreadyExists
错误。更多详情请参见 CopyObject。当不携带此参数或此参数的值为false时,同名文件会被覆盖。
- 开启版本控制功能