对象存储服务 OBS-使用obsutil实现客户端跨区域复制

时间:2025-04-16 09:38:02

使用obsutil实现客户端跨区域复制

obsutil支持使用客户端跨区域复制模式进行复制,即通过数据流的方式从源桶直接复制数据到目标桶,且两个桶可以是任意两个OBS服务的桶;借助客户端跨区域复制模式即可实现相同账户下不同区域桶或不同账户间桶内对象的复制;跨账号复制对象具体步骤如下:

  1. 使用obsutil config命令配置源桶对应账号的AK、SK及endpoint信息:

    • Windows操作系统
      obsutil config -i=src_ak -k=src_sk -e=src_endpoint -crr
    • Linux操作系统
      ./obsutil config -i=src_ak -k=src_sk -e=src_endpoint -crr

  2. 使用obsutil config命令配置目标桶对应账号的AK、SK及endpoint信息:

    • Windows操作系统
      obsutil config -i=dst_ak -k=dst_sk -e=dst_endpoint
    • Linux操作系统
      ./obsutil config -i=dst_ak -k=dst_sk -e=dst_endpoint

  3. 配置完成后,您可以通过如下方式检查连通性,确认目标桶配置是否无误。

    • Windows操作系统
      obsutil ls -s
    • macOS/Linux操作系统
      ./obsutil ls -s

    根据命令回显结果,检查配置结果:

    • 如果返回结果中包含“Bucket number :”,表明配置正确。
    • 如果返回结果中包含“Http status [403]”,表明访问密钥配置有误。
    • 如果返回结果中包含“A connection attempt failed”,表明无法连接OBS服务,请检查网络环境是否正常。
    • 如果返回结果中包含“Error: cloud_url [url] is not in well format”,表明访问 域名 有误,请检查配置文件中域名是否正常。

    如果返回结果中包含“Http status [403]”,也可能是没有获取桶列表的权限,需要视具体场景进一步确认根因。

  4. 调用cp命令,指定采用跨区域复制模式将源桶对象复制到目标桶:

    • Windows操作系统
      obsutil cp obs://src-bucket obs://dst-bucket -f -r -crr
    • Linux操作系统
      ./obsutil cp obs://src-bucket obs://dst-bucket -f -r -crr

  • 要使用跨区域复制模式,必须指定-crr参数;如果设置了该参数,必须确保更新了配置文件中客户端跨区域复制的相关配置信息,具体可参考更新配置文件
  • 复制时源桶对应的配置信息为配置文件中的:akCrr/skCrr/tokenCrr/endpointCrr,目标桶对应的配置信息为配置文件中的:ak/sk/token/endpoint;
  • 对于同一账号下不同区域的桶,也可以按照上述步骤实现同一账号下跨区域复制对象的功能;同时也需要按照步骤一、二设置源桶及目标桶的账号信息。

使用-crr参数时,不会复制源对象的标准元数据信息,包括Cache-Control、Expires、Content-Encoding、Content-Disposition、Content-Type、Content-Language6个标准头域。

使用-crr参数进行跨区域复制时,不会复制源对象的ACL。可使用[-acl=xxx]指定目标对象的ACL,若不指定,则默认继承桶ACL权限。

support.huaweicloud.com/utiltg-obs/obs_11_0039.html