您可以通过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。
使用示例
在本地创建名为
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>
为源存储空间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。
使用示例
配置本地文件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>
为源存储空间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****
关于此命令的其他通用选项的更多信息,请参见通用选项。