跨区域复制(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
。 - 使用示例
- 在本地创建名为
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>
- 为源存储空间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****
关于此命令的其他通用选项的更多信息,请参见通用选项。