文档首页/ 对象存储服务 OBS/ 用户指南/ 数据管理/ 数据复制/ 使用OBS实现跨账号跨区域桶之间数据复制
更新时间:2026-09-11 GMT+08:00
分享

使用OBS实现跨账号跨区域桶之间数据复制

使用场景

跨账号跨区域复制是指将某个账号某个区域下的源桶中的数据复制到其他账号其他区域下的目标桶中。

跨账号跨区域复制主要分为以下两种场景:

  • 将账号A下区域A的桶A中的数据复制到账号B下区域B的桶B中。

  • 将账号A下区域A的桶A中的账号B上传的数据复制到账号A下区域B的桶B中。

本节介绍使用OBS控制台、API和obsutil工具实现跨账号跨区域桶之间数据复制。

支持复制的对象范围:包括文件/文件夹、对象列表、指定对象前缀、指定时间修改后的对象。

支持复制的对象内容:对象内容、元数据(对象名称、大小、最后修改时间、创建者、版本号、用户定义的元数据)、ACL、存储类别。

跨账号跨区域复制主要适用于以下场景:

  • 合规性要求

    OBS默认跨多个地理位置较远的可用区存储数据,但由于合规性要求所规定的数据存储距离可能更远,此时通过跨区域复制,可以在远距离OBS区域之间复制数据以满足合规性要求。

  • 最大限度减少延迟

    客户需要在多地访问相同的OBS资源。为了最大限度缩短访问对象时的延迟,您可以使用跨区域复制,在离客户较近的区域中创建对象副本。

  • 数据复制

    由于业务原因,您需要将OBS数据从一个区域的数据中心迁移至另一个区域的数据中心。

  • 数据备份与容灾

    出于对数据安全性以及可用性的考虑,您希望对所有写入OBS的数据,都在另一个区域的数据中心显式地创建一个备份,以防止在数据发生不可逆损毁时,有安全、可用的备份数据。

  • 易维护

    您在两个不同OBS区域中具有分析同一组对象的计算集群,您可以选择在这些区域中维护对象副本。

OBS帮助您将存储于华为云对象存储的业务数据复制到指定Region,但华为云并不感知您的数据的具体内容,也不对您使用本服务的合法合规性负责。如果您的复制涉及跨境传输,请确保您使用本服务符合法律法规的要求。

约束与限制

表1 跨账号跨区域复制约束与限制

限制类别

具体限制

桶版本限制

桶版本号为3.0及以上的桶支持跨区域复制功能。

桶版本号可以在OBS管理控制台上,进入桶概览页后,在“基本信息”中查看。详情请参见查看桶信息

功能限制

  • 源桶中归档存储或深度归档存储类型的对象不支持跨区域复制到目标桶。
  • 如果目标桶所属区域不支持存储类别,则复制后对象的存储类别均为标准存储类别。
  • OBS目前仅支持一个源桶同时复制到一个目标桶,不支持一个源桶同时复制到多个目标桶。允许修改目标桶,但修改目标桶会更改所有已创建规则的目标桶。
  • 跨区域复制不支持追加写对象(Appendable类型的对象)复制。
  • 同一个源桶只能创建一条复制所有对象的跨区域复制规则,或多条(最多100条)按前缀匹配的跨区域复制规则。
  • 不支持跨区域复制SSE-C加密的对象。
  • 不支持跨账号跨区域复制SSE-KMS加密的对象。

时间限制

跨区域复制不保证时效性,配置跨区域复制规则后,可能会出现对象不会立即进行复制的情况,请耐心等待。

区域限制

  • 源桶和目标桶必须属于不同的区域。
  • OBS跨区域复制支持的区域情况如图2 跨区域复制支持区域所示。√表示两个区域可连通,x表示两个区域不可连通。

同步历史对象相关

  • 启用跨区域复制功能之前上传的对象,默认不会被复制到目标桶,除非开启了“同步历史对象”功能。
  • 启用历史对象复制后,修改跨区域复制配置可能导致历史对象不复制,建议在历史对象复制完成前不要改变该桶的跨区域复制配置。
  • 源桶中对象复制到目标桶后,如果目标桶中对象被删除,3天内重新配置源桶到目标桶的启用历史对象复制的复制规则,在目标桶中被删除的对象的相同版本不会再次被从源桶复制到目标桶。

    例如:您先配置跨区域复制规则1,将源桶中的当前版本对象test.txt复制到了目标桶,又从目标桶中删除了该对象test.txt,同时删除了跨区域复制规则1。2天后又配置了启用历史对象复制的跨区域复制规则2,此时对象test.txt不会再被复制到目标桶中。

  • 修改跨账号跨区域复制配置,不会对之前上传的对象和已复制的对象生效。

多版本控制相关

  • 源桶和目标桶的多版本控制状态必须保持一致,即同时开启或关闭多版本控制。配置了跨区域复制后,如果修改了多版本状态,会导致源桶和目标桶多版本状态不一致期间的操作无法被复制;且多版本控制一旦开启只能暂停而无法关闭,因此在使用replication规则时请谨慎修改多版本状态。
  • 当源桶、目标桶多版本控制处于开启或暂停状态,且跨区域复制规则处于开启状态时,在源桶中不指定版本删除对象,目标桶会同步删除此对象。
  • 在启用跨区域复制过程中,如果您修改目标桶的多版本控制状态,会导致对象复制失败;如果您尝试修改源桶多版本控制状态,必须先删除复制配置,然后才能进行修改。

权限相关

  • 需要保证桶拥有者具有源桶和目标桶的读写权限,以确保数据能够成功复制。如果源桶或目标桶的读写权限错误,导致系统没有读源对象或者写目标对象的权限,这种对象将一直复制不成功,即使将权限修改正确后,也不会重新复制。
  • 不建议您对目标桶中的副本对象进行删除、覆盖或者修改ACL操作,此类操作可能导致目标桶中对象最新版本或者对象访问控制权限与源桶不一致。
  • 必须先在目标桶中配置桶策略,授予源桶拥有者除“DeleteBucket”、“PutBucketPolicy”和“PutBucketAcl”外的所有权限,才能将源桶中的对象复制到目标桶中。相关权限配置,请参见自定义创建桶策略(可视化视图)
  • 如果源桶中有非源桶拥有者上传的对象时,必须先在源桶配置桶ACL,给源桶的拥有者授予“FULL_CONTROL”权限,同时设置对象读权限(对应API中“Delivered”设为“true”),才能将源桶中其他账号的对象复制到目标桶中。可通过编辑源桶拥有者的ACL实现。

  • 如果在复制源对象内容到目标桶的同时,还需要复制源对象的ACL到目标桶,则必须先在目标桶中设置桶ACL,给源桶拥有者授予“FULL_CONTROL”权限,同时设置对象读权限(对应API中“Delivered”设为“true”)。

    关于配置桶ACL,请参见配置桶ACL;关于“FULL_CONTROL”权限的说明,请参见使用自定义ACL

其他约束与限制

  • 源桶中的对象只能被复制到一个目标桶中,且复制过去的对象不能再被复制到另外一个目标桶。例如有两个不同区域的桶A和桶B,桶A数据可以复制到桶B中,桶B数据也可以复制到桶A中,但桶B中存储的桶A数据的副本不会复制,同理桶A中存储的桶B数据的副本也不会复制。
  • 如果目标桶禁止配置公开ACL(开启了阻止公共访问功能中的BlockPublicAcls开关),那么源桶中配置了ACL公开语义的对象,会因为和目标桶的访问策略冲突而导致复制失败。

跨账号跨区域复制费用说明

  • 使用OBS控制台、API、obsutil工具进行跨区域数据复制时,也会产生请求费用、流量费用、存储费用,如表2
    表2 跨区域复制数据说明

    操作名称

    产生费用类别

    费用说明

    付费方式

    跨区域复制数据

    请求费用

    按复制成功的对象数计算请求次数,产生请求费用。复制对象过程中调用的请求,请参考复制对象说明

    • 对于非多段对象,成功复制一个对象,会产生源桶的一个GET请求和目标桶的一个PUT请求;在源桶删除一个对象,会产生目标桶的一个DELETE请求。
    • 多段对象的每个分段,均会产生源端的GET请求和目标端的PUT请求。
    • 已通过跨区域复制功能复制到目标桶的对象,如果修改了源对象的ACL,则跨区域复制功能会同步复制源对象的ACL到目标对象,该操作会产生源端的PUT请求费用。
      说明:

      由于是源端发起的复制对象ACL的行为,所以产生的PUT请求费用在源端计算。

    如何计算请求费用等详细说明,请参见请求费用说明

    按需计费

    流量费用

    使用跨区域复制功能将源桶数据复制到另一个区域的目标桶时所产生的跨区域复制流量,只收取数据流出源桶单向流量费用。

    如果对象经过了服务端加密,计算跨区域复制流量费用时,SSE-KMS和SSE-OBS按照明文长度计算。

    说明:

    跨账号跨区域复制暂不支持复制SSE-KMS的加密对象

    按需计费

    资源包(跨区域复制流量包)

    存储费用

    跨区域复制目标桶的存储费用,即除了为源桶数据支付存储费用,由于目标桶经过复制后也会存储数据,您还需支付目标桶数据的存储费用。

    如果您修改了复制对象的存储类别,复制到目标桶的数据按新的存储类型计算存储费用。

    如果对象经过了服务端加密,计算存储费用时,按照密文长度计算。

    按需计费

    资源包(各存储类别对应的存储包)

    同步历史对象

    请求费用

    启用同步历史对象功能,系统会将创建跨区域复制规则前已经存在于桶中的对象同步复制到目标桶。

    请求费用按系统自动同步时复制成功的对象数计算请求次数,产生请求费用,且对于历史对象的列举,产生相应的列举费用。

    按需计费

    流量费用

    系统跨区域同步对象时,所产生的跨区域复制流量,只收取数据流出源桶的单向流量费用。

    如果历史对象经过了服务端加密,计算跨区域复制流量费用时,SSE-KMS和SSE-OBS按照明文长度计算。

    按需计费

    资源包(跨区域复制流量包)

    存储费用

    跨区域复制目标桶的存储费用,即除了为源桶数据支付存储费用,由于目标桶经过复制后也会存储数据,您还需支付目标桶数据的存储费用。

    如果您修改了复制对象的存储类别,复制到目标桶的数据按新的存储类型计算存储费用。

    如果历史对象经过了服务端加密,计算存储费用时,按照密文长度计算。

    按需计费

    资源包(各存储类别对应的存储包)

前提条件

  • 已在某个账号某个区域下创建源桶。
  • 已在另一个账号的另一个区域下创建目标桶。创建桶操作请参见创建桶
  • 使用OBS控制台、API、obsutil工具进行跨账号跨区域对象复制时,源桶的版本号必须为3.0及以上,并且源桶所在区域支持跨账号跨区域复制功能。
  • 必须先在目标桶中配置桶策略,授予源桶拥有者除“DeleteBucket”、“PutBucketPolicy”和“PutBucketAcl”外的所有权限,才能将源桶中的对象复制到目标桶中。相关权限配置,请参见自定义创建桶策略(可视化视图)
  • 如果源桶中有非源桶拥有者上传的对象时,必须先在源桶配置桶ACL,给源桶的拥有者授予“FULL_CONTROL”权限,同时设置对象读权限(对应API中“Delivered”设为“true”),才能将源桶中其他账号的对象复制到目标桶中。可通过编辑源桶拥有者的ACL实现。

  • 如果在复制源对象内容到目标桶的同时,还需要复制源对象的ACL到目标桶,则必须先在目标桶中设置桶ACL,给源桶拥有者授予“FULL_CONTROL”权限,同时设置对象读权限(对应API中“Delivered”设为“true”)。

    关于配置桶ACL,请参见配置桶ACL;关于“FULL_CONTROL”权限的说明,请参见使用自定义ACL

相关文档