跨区域复制(Cross-Region Replication)是跨不同OSS数据中心(地域)的存储空间(Bucket)自动、异步(近实时)复制文件(Object)。您可以通过replication命令管理跨区域复制规则配置。规则配置完成后,OSS会根据指定规则将源Bucket内的Object复制到不同区域的目标Bucket。

注意
  • 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门
  • 有关跨区域复制的使用场景及注意事项的更多信息,请参见跨区域复制介绍

添加跨区域复制规则

您可以通过跨区域复制规则将源Bucket中的数据同步到多个目标Bucket。单个Bucket关联的复制规则数量不能超过100条。

要添加跨区域复制规则,首先要创建本地文件并在文件中添加跨区域复制规则,然后将跨区域复制规则添加到源Bucket。

  • 命令格式
    ./ossutil64 replication --method put oss://bucketname local_xml_file

    参数说明如下:

    参数 说明
    bucketname 待添加跨区域复制规则的源Bucket名称。
    local_xml_file 配置跨区域复制规则的本地文件名称,例如localfile.txt
  • 使用示例
    1. 在本地创建名为localfile.txt文件,并根据使用场景配置跨区域复制规则。
      将源Bucket内与指定前缀srcdir匹配的文件的增、删、改操作同步到华东1(杭州)地域下名为destbucket的目标Bucket。此外,指定进行跨区域复制时开启传输加速,且同步历史数据。
       <?xml version="1.0" encoding="UTF-8"?>
       <ReplicationConfiguration>
          <Rule>
               <PrefixSet>
                   <Prefix>srcdir</Prefix>             
               </PrefixSet>
               <Action>ALL,PUT</Action>
               <Destination>
                   <Bucket>destbucket</Bucket>
                   <Location>oss-cn-hangzhou</Location>
                   <TransferType>oss_acc</TransferType>
               </Destination>
               <HistoricalObjectReplication>enabled</HistoricalObjectReplication>
          </Rule>
       </ReplicationConfiguration>
    2. 为源存储空间srcbucket添加跨区域复制规则。
      ./ossutil64 replication --method put oss://srcbucket localfile.txt
  • 返回结果

    以下输出结果表明已为srcbucket成功添加跨区域复制规则。

    0.856895(s) elapsed

查看跨区域复制配置

  • 命令格式
    ./ossutil64 replication --method get oss://bucketname
  • 使用示例

    获取存储空间srcbucket的跨区域复制配置,并将配置结果直接输出屏幕。

    ./ossutil64 replication --method get oss://srcbucket

    以下输出结果表明已成功获取srcbucket的跨区域复制配置。

    <?xml version="1.0" encoding="UTF-8"?>
    <ReplicationConfiguration>
      <Rule>
        <ID>37417af4-f2dc-4b24-92d3-82092af6****</ID>
        <Action>ALL</Action>
        <Destination>
          <Bucket>destbucket</Bucket>
          <Location>oss-cn-beijing</Location>
        </Destination>
        <Status>doing</Status>
        <HistoricalObjectReplication>enabled</HistoricalObjectReplication>
      </Rule>
    </ReplicationConfiguration>
    
    
    0.069195(s) elapsed

查询可同步的目标地域

  • 命令格式
    ./ossutil64 replication --method get --item location oss://bucketname
  • 使用示例

    查询源存储空间srcbucket的数据可同步到哪些目标地域。

    ./ossutil64 replication --method get --item location oss://srcbucket

    以下输出结果表明已成功获取可同步到的目地域。

    <?xml version="1.0" ?>
    <ReplicationLocation>
      <Location>oss-cn-beijing</Location>
      <Location>oss-cn-qingdao</Location>
      <Location>oss-cn-shenzhen</Location>
      <Location>oss-cn-hongkong</Location>
      <Location>oss-us-west-1</Location>
      <LocationTransferTypeConstraint>
        <LocationTransferType>
          <Location>oss-cn-hongkong</Location>
            <TransferTypes>
              <Type>oss_acc</Type>          
            </TransferTypes>
          </LocationTransferType>
          <LocationTransferType>
            <Location>oss-us-west-1</Location>
            <TransferTypes>
              <Type>oss_acc</Type>
            </TransferTypes>
          </LocationTransferType>
        </LocationTransferTypeConstraint>
      </ReplicationLocation>
    
    0.226523(s) elapsed

查询指定Bucket的跨区域复制进度

  • 命令格式
    ./ossutil64 replication --method get --item progress oss://bucketname [ruleID]

    参数及选项说明如下:

    参数 说明
    bucketname 待获取跨区域复制进度的Bucket名称。
    ruleID 查询指定ruleID对应的跨区域复制进度。如果不指定ruleID,则查询Bucket所有关联的跨区域复制进度。目前只支持将跨区域复制进度输出到屏幕上。
  • 使用示例

    获取srcbucket指定ruleID对应的跨区域复制进度。

    ./ossutil64 replication --method get --item progress oss://srcbucket 37417af4-f2dc-4b24-92d3-82092af6****

    获取srcbucket所有关联规则的跨区域复制进度。

    ./ossutil64 replication --method get --item progress oss://srcbucket

    以下输出结果表明源存储空间srcbucket在开启跨区域复制前已有的数据复制到目标Bucket的进度为100%,在开启跨区域复制后,早于时间点(2021-08-09T06:00:59.000Z)写入srcbucket中的数据都已复制到目标存储空间destbucket。

    <?xml version="1.0" encoding="UTF-8"?>
    <ReplicationProgress>
      <Rule>
        <ID>37417af4-f2dc-4b24-92d3-82092af6****</ID>
        <Action>ALL</Action>
        <Destination>
          <Bucket>destbucket</Bucket>
          <Location>oss-cn-beijing</Location>
        </Destination>
        <Status>doing</Status>
        <HistoricalObjectReplication>enabled</HistoricalObjectReplication>
        <Progress>
          <HistoricalObject>1.00</HistoricalObject>
          <NewObject>2021-08-09T06:00:59.000Z</NewObject>
        </Progress>
      </Rule>
    </ReplicationProgress>
    
    
    0.125002(s) elapsed

删除跨区域复制配置

  • 命令格式
    ./ossutil64 replication --method delete oss://bucketname ruleID
  • 使用示例

    删除srcbucket指定ruleID关联的跨区域复制配置。

    ./ossutil64 replication --method delete oss://srcbucket 37417af4-f2dc-4b24-92d3-82092af6****

    以下输出结果表明已成功删除指定ruleID关联的跨区域复制配置。

    0.069195(s) elapsed

通用选项

当您需要通过命令行工具ossutil管理不同地域的Bucket时,可以通过-e选项切换至指定Bucket所属的Endpoint。当您需要通过命令行工具ossutil管理多个阿里云账号下的Bucket时,可以通过-i选项切换至指定账号的AccessKey ID,并通过-k选项切换至指定账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东2(上海)地域下的testbucket配置跨区域复制规则,跨区域复制规则通过本地文件localfile.txt进行配置。命令如下:

./ossutil64 replication --method put oss://testbucket localfile.txt -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

有关此命令的其他通用选项的更多信息,请参见通用选项