2017-02-06 1 views
1

사용자의 CV가 포함 된 하나의 BLOB가 있습니다.C 저장소의 BLOB를 하나의 저장소 계정에서 다른 저장소 계정으로 복사 #

내 사이트는 현재 살아 있습니다. 이제 다른 저장 계정을 사용하여 한 BLOB에서 다른 BLOB로 복사하려고합니다. 여기

은 방울

 CloudStorageAccount sourceStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("sourceStorageConnectionString")); 
     CloudStorageAccount targetStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("targetStorageConnectionString")); 

     CloudBlobClient sourceCloudBlobClient = sourceStorageAccount.CreateCloudBlobClient(); 
     CloudBlobClient targetCloudBlobClient = targetStorageAccount.CreateCloudBlobClient(); 

     CloudBlobContainer sourceContainer = sourceCloudBlobClient.GetContainerReference(CloudConfigurationManager.GetSetting("sourceContainer")); 
     CloudBlobContainer targetContainer = targetCloudBlobClient.GetContainerReference(CloudConfigurationManager.GetSetting("targetContainer")); 
     targetContainer.CreateIfNotExists(); 

     // Copy each blob 
     foreach (IListBlobItem blob in sourceContainer.ListBlobs(useFlatBlobListing: true)) 
     { 

      Uri thisBlobUri = blob.Uri; 

      var blobName = Path.GetFileName(thisBlobUri.ToString()); 
      Console.WriteLine("Copying blob: " + blobName); 

      CloudBlockBlob sourceBlob = sourceContainer.GetBlockBlobReference(blobName); 
      CloudBlockBlob targetBlob = targetContainer.GetBlockBlobReference(blobName); 

      Task task = TransferManager.CopyAsync(sourceBlob, targetBlob, true /* isServiceCopy */); 

     } 

을 복사하는 내 코드입니다하지만 내 관심사입니다 :이 복사 작업이 실행되고 이력서 중 하나는 모든 사용자가 업데이트되면 다음 라이브 사이트 또는 복사의 효과가있을 것입니다 조작?

+0

복사 작업을 시작할 때의 blob 버전이 복사됩니다. – Aravind

답변

2

비동기 서비스 쪽 복사본 (isServiceCopy = true)을 만들고 있습니다. 복사 중에 원본이 변경되면 해당 원본을 변경하는 ETag가 변경됩니다. 그런 다음 실패한 사본을 다시 시작해야합니다.

참고 : 복사하기 전에 스냅 샷을 찍는 경우 기본 blob이 변경되는 경우에도 해당 내용이 변경 될 수 없다는 것을 알고 스냅 샷을 안전하게 복사 할 수 있습니다. 스냅 샷을 정리할 필요가 있지만 원본 BLOB에서 동시 쓰기 문제를 해결할 수있는 방법입니다 (또는 언급 한대로 단순히 다시 시도 할 수 있습니다).

나는 비슷한 질문에 대한 답변을 게시했습니다 : here.

관련 문제