全部產品
Search
文件中心

Object Storage Service:跨區域複製

更新時間:Aug 30, 2018

跨區域複製是在不同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();