全部产品
阿里云办公

跨区域复制

更新时间:2018-06-29 17:13:45

跨区域复制是在不同OSS地域之间自动、异步复制文件,将源存储空间中文件的改动(新建、覆盖、删除操作)同步到目标存储空间中。该功能用于满足异地容灾和数据复制的需求。

更多跨区域复制的内容请参见开发指南中的管理跨区域复制

开启跨区域复制

以下代码用于开启跨区域复制:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. AddBucketReplicationRequest request = new AddBucketReplicationRequest(bucketName);
  10. request.setReplicationRuleID("<yourRuleId>");
  11. request.setTargetBucketName("<yourTargetBucketName>");
  12. // 目标Endpoint以北京为例。
  13. request.setTargetBucketLocation("oss-cn-beijing");
  14. // 设置禁止同步历史数据。默认会同步历史数据。
  15. request.setEnableHistoricalObjectReplication(false);
  16. ossClient.addBucketReplication(request);
  17. // 关闭OSSClient。
  18. ossClient.shutdown();

查看跨区域复制

以下代码用于查看存储空间已开启的跨区域复制:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. List<ReplicationRule> rules = ossClient.getBucketReplication(bucketName);
  10. for (ReplicationRule rule : rules) {
  11. System.out.println(rule.getReplicationRuleID());
  12. System.out.println(rule.getTargetBucketLocation());
  13. System.out.println(rule.getTargetBucketName());
  14. }
  15. // 关闭OSSClient。
  16. ossClient.shutdown();

查看跨区域复制进度

跨区域复制进度分为历史数据同步进度和实时数据同步进度。

  • 历史数据同步进度用百分比表示,仅对开启了历史数据同步的存储空间有效。
  • 实时数据同步进度用新写入数据的时间点表示,代表这个时间点之前的数据已同步完成。

以下代码用于查看跨区域复制进度:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. BucketReplicationProgress process = ossClient.getBucketReplicationProgress(bucketName, "<yourRuleId>");
  10. System.out.println(process.getReplicationRuleID());
  11. // 是否开启了历史数据同步。
  12. System.out.println(process.isEnableHistoricalObjectReplication());
  13. // 历史数据同步进度。
  14. System.out.println(process.getHistoricalObjectProgress());
  15. // 实时数据同步进度。
  16. System.out.println(process.getNewObjectProgress());
  17. // 关闭OSSClient。
  18. ossClient.shutdown();

查看可同步的目标地域

以下代码用于获取存储空间所能同步到的地域列表:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. List<String> locations = ossClient.getBucketReplicationLocation(bucketName);
  10. for (String loc : locations) {
  11. System.out.println(loc);
  12. }
  13. // 关闭OSSClient。
  14. ossClient.shutdown();

关闭跨区域复制

以下代码用于关闭已开启的跨区域复制:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 创建OSSClient实例。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. // 关闭跨区域复制。关闭后目标存储空间内的文件依然存在,只是不再同步源存储空间内文件的所有改动。
  10. ossClient.deleteBucketReplication(bucketName, "<yourRuleId>");
  11. // 关闭OSSClient。
  12. ossClient.shutdown();
本文导读目录