replication(数据复制)

您可以通过replication命令管理数据复制(包括同区域和数据复制)规则配置。规则配置完成后,OSS会根据指定规则将源Bucket内的Object复制到相同或不同区域的目标Bucket。

注意事项

  • 要添加复制规则或开启RTC,您必须具有oss:PutBucketReplication权限;要查看数据复制配置,您必须具有oss:GetBucketReplication权限;要删除数据复制配置,您必须具有oss:DeleteBucketReplication权限;要获取数据复制进度,您必须具有oss:GetBucketReplicationProgress权限;要获取可复制到的目标存储空间所在的地域,您必须具有oss:GetBucketReplicationLocation权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • 从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

添加复制规则

您可以通过数据复制规则将源Bucket中的数据同步到多个目标Bucket。单个Bucket关联的复制规则数量不能超过100条。关于数据复制的更多信息,请参见跨区域复制概述

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

  • 命令格式

    ossutil replication --method put oss://bucketname local_xml_file

    参数说明如下:

    参数

    说明

    bucketname

    待添加数据复制规则的源Bucket名称。

    local_xml_file

    配置数据复制规则的本地文件名称,例如localfile.xml

    关于配置参数的更多信息,请参见PutBucketReplication

  • 使用示例

    1. 在本地创建名为localfile.xml文件,并根据使用场景配置数据复制规则。

      将源Bucket内与指定前缀srcdir匹配文件的增和改操作,同步到华东1(杭州)地域下名为destbucket的目标Bucket。此外,指定进行数据复制时开启传输加速,且同步历史数据。

       <?xml version="1.0" encoding="UTF-8"?>
       <ReplicationConfiguration>
          <Rule>
               <PrefixSet>
                   <Prefix>srcdir</Prefix>             
               </PrefixSet>
               <Action>PUT</Action>
               <Destination>
                   <Bucket>destbucket</Bucket>
                   <Location>oss-cn-hangzhou</Location>
                   <TransferType>oss_acc</TransferType>
               </Destination>
               <HistoricalObjectReplication>enabled</HistoricalObjectReplication>
          </Rule>
       </ReplicationConfiguration>
    2. 为源存储空间srcbucket添加数据复制规则。

      ossutil replication --method put oss://srcbucket localfile.xml
  • 返回结果

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

    0.856895(s) elapsed

开启或关闭数据复制时间控制(RTC)功能

说明

您可以基于新创建或已有的跨区域复制任务开启RTC。您可以对整个Bucket的数据复制任务开启RTC,也可以选择对Bucket内指定前缀或者标签的数据复制任务开启RTC。

  • 命令格式

    ossutil replication --method put --item rtc oss://bucketname local_xml_file

    参数说明如下:

    参数

    说明

    bucketname

    待开启或关闭数据复制时间控制(RTC)功能的源Bucket名称。

    local_xml_file

    配置开启或关闭数据复制时间控制(RTC)功能的本地文件名称,例如localfile.xml

    关于配置参数的更多信息,请参见PutBucketReplication

  • 使用示例

    1. 配置本地文件local.xml。

      • 开启数据复制时间控制(RTC)

        <?xml version="1.0" encoding="UTF-8"?>
        <ReplicationRule>
            <RTC>
                <Status>enabled</Status>
            </RTC>
            <ID>test-replication-id</ID>
        </ReplicationRule>
      • 关闭数据复制时间控制(RTC)

        <?xml version="1.0" encoding="UTF-8"?>
        <ReplicationRule>
            <RTC>
                <Status>disabled</Status>
            </RTC>
            <ID>test-replication-id</ID>
        </ReplicationRule>
    2. 为源存储空间srcbucket开启或关闭数据复制时间控制(RTC)功能。

      ossutil replication --method put --item rtc oss://srcbucket local.xml
  • 返回结果

    0.856895(s) elapsed

查看数据复制配置

  • 命令格式

    ossutil replication --method get oss://bucketname
  • 使用示例

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

    ossutil 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

查询可同步的目标地域

  • 命令格式

    ossutil replication --method get --item location oss://bucketname
  • 使用示例

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

    ossutil 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的数据复制进度

  • 命令格式

    ossutil replication --method get --item progress oss://bucketname [ruleID]

    参数及选项说明如下:

    参数

    说明

    bucketname

    待获取数据复制进度的Bucket名称。

    ruleID

    查询指定ruleID对应的数据复制进度。如果不指定ruleID,则查询Bucket所有关联的数据复制进度。目前只支持将数据复制进度输出到屏幕上。

  • 使用示例

    获取srcbucket指定ruleID对应的数据复制进度。

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

    获取srcbucket所有关联规则的数据复制进度。

    ossutil 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

删除数据复制配置

  • 命令格式

    ossutil replication --method delete oss://bucketname ruleID
  • 使用示例

    删除srcbucket指定ruleID关联的数据复制配置。

    ossutil 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进行配置。命令如下:

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

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