拷贝文件是指在不改变文件内容的情况下,将某个存储空间(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时,同名文件会被覆盖。