数据同步
更新时间:2022-07-13
设置数据同步规则
参数 | 是否必须 | 描述 |
---|---|---|
id | 是 | replication规则名,id 由数字字母 - _ 组成,不得超过20个字符 |
status | 是 | 是否生效 |
resource | 是 | replication生效前缀,resource的配置形式为{$bucket_name/<生效的对象前缀>},必须要以$bucket_name +/ 开头 |
destination | 是 | 复制的目的端配置 |
+bucket | 是 | 目的Bucket name |
+storageClass | 否 | 目的Object的存储类型。如果保持和源Bucket的存储类型一致,则该参数不需要配置;如果需要单独指定存储类型可以为STANDARD ,STANDARD_IA ,COLD ;如果是多AZ类型bucket,可取值为MAZ_STANDARD_IA 和MAZ_STANDARD 。 |
replicateHistory | 否 | 历史文件复制,有该项则认为是开启。开启历史文件复制后,存量的全部Object都同步复制到目的Bucket,复制范围共用resource。 |
+storageClass | 否 | 目的Object的存储类型。如果保持和源Bucket的存储类型一致,则该参数不需要配置;如果需要单独指定存储类型可以为STANDARD ,STANDARD_IA ,COLD ;如果是多AZ类型bucket,可取值为MAZ_STANDARD_IA 和MAZ_STANDARD 。 |
replicateDeletes | 是 | 是否开启删除同步,可以为enabled ,disabled 。 |
若用户需要开启Bucket之间的数据同步,则如下代码可以做到:
bucket_name = "<YOUR_BUCKET_NAME>"
rule_id = "sample-rep-config"
dst_bucket_name = "<DESTINATION_BUCKET_NAME>"
replication = {
"status":"enabled",
"resource":[
bucket_name + "/*"
],
"destination":
{
"bucket": dst_bucket_name,
"storageClass":"COLD"
},
"replicateHistory":
{
"bucket": dst_bucket_name,
"storageClass":"COLD"
},
"replicateDeletes":"enabled",
"id": rule_id
}
# test put bucket replication
bos_client.put_bucket_replication(bucket_name, replication)
获取指定的数据同步规则
若用户想获取bucket指定id的数据同步信息,包括源Bucket名称、目的Bucket名称、存储类型、是否进行历史复制、数据同步策略、目的region等。则如下代码所示:
response = bos_client.get_bucket_replication(bucket_name, id=rule_id)
print("id:{}, status:{}, resource:{}, destination:{}, replicateDeletes:{}, replicateHistory:{}".format(response.id, response.status, response.resource, response.destination, response.replicate_deletes, response.replicate_history))
删除指定的数据同步规则
若用户想删除bucket指定id的数据同步,则如下代码所示:
bos_client.delete_bucket_replication(bucket_name ,id=rule_id)
列举数据同步规则
若用户想获取bucket所有的replication同步规则,则如下代码所示:
response = bos_client.list_bucket_replication(bucket_name)
print(response.rules)
获取指定的数据同步规则的进程状态
若用户想获取指定id的数据同步复制的进程状态,则如下代码所示:
response = bos_client.get_bucket_replication_progress(bucket_name, id=rule_id)
print("status:{}, historyReplicationPercent:{}, latestReplicationTime:{}".format(response.status, response.history_replication_percent, response.latest_replication_time))