全部產品
Search
文件中心

Object Storage Service:replication(資料複製)

更新時間:Nov 05, 2024

您可以通過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****

關於此命令的其他通用選項的更多資訊,請參見通用選項