更新时间:2024-10-24 GMT+08:00

复制对象

使用场景

用户可以根据需要将存储在OBS上的对象复制到其他路径下。复制对象操作将创建需要复制的对象的副本。在单次操作中,您可以创建最大5GB的对象副本。对于复制大于5GB的对象副本,请您使用多段上传API。通过使用copy操作,您可以:

  • 创建对象的其他副本。
  • 通过复制对象并删除原始对象来重命名它们。
  • 更改对象元数据。

    每个OBS对象都带有元数据,它是一组名称值对,分为系统元数据和用户自定义元数据两种,某些系统元数据用户也是可以控制的。您可以在上传对象时对其进行设置:

    • 上传对象后,通过接口修改元数据,详情请参见修改对象元数据
    • 创建对象的副本并设置元数据,在复制操作中,设置与源和目标相同的对象。

    用户控制的系统元数据和用户自定义元数据都会被复制下来,OBS会自动重设系统控制的元数据。因此在复制请求中,您无需设置这些值。例如,在复制对象时,OBS将重设已复制的对象的创建日期。

    如果您选择在复制期间更新任意对象的用户可配置元数据(系统或用户定义的),您必须显式地指定所有的用户可配置元数据,即使您只更改一个元数据的值(显示在请求中的源对象上)。

前提条件

您需要有源Object的读权限及目标Bucket的读写权限,否则无法完成拷贝操作。

注意事项

  • 不支持跨区域复制对象。例如,不支持将北京一区域下桶内的对象复制到北京四区域下的桶。如果您想将对象自动复制到其他区域,详情请参见跨区域复制
  • 不支持对通过追加写方式生成的对象进行拷贝。
  • 在单次操作中,您可以创建最大5GB的对象副本。对于复制大于5GB的对象副本,请您使用多段上传API。
  • 如果要复制的深度归档对象数量较多,为了降低PUT类请求费用,建议先指定拷贝后的对象存储类型为标准存储,然后通过生命周期规则将其转储为深度归档类型。
  • 复制对象时默认会覆盖同名对象, 复制成功后,只能下载到新的对象objectb,老对象objectb将会被删除。为防止数据丢失,您可以通过以下方式保护您的文件。
    • 在使用copy接口时请确保目标对象不存在或者已无价值。
    • 开启多版本控制功能

      开启多版本控制功能后,被删除或覆盖的文件会以历史版本的形式保存下来。您可以随时恢复历史版本文件。

  • OBS帮助您将存储于华为云对象存储的业务数据复制到指定Region,但华为云并不感知您的数据的具体内容,也不对您使用本服务的合法合规性负责。如果您的复制涉及跨境传输,请确保您使用本服务符合法律法规的要求。
  • 复制对象的结果不能仅根据HTTP返回头域中的status_code来判断请求是否成功,头域中status_code返回200时表示服务端已经收到请求,且开始处理复制对象请求。复制是否成功会在响应消息的body中,只有body体中有ETag标签才表示成功,否则表示复制失败。

使用方式

OBS支持通过API、SDK、OBS Browser+、obsutil方式复制对象,不支持通过控制台方式复制对象。