2012-09-11 2 views

답변

9

아니요 Windows Azure에서 BLOB 컨테이너의 이름을 바꿀 수 없습니다. 당신이 할 수있는 일은 새로운 이름으로 새로운 BLOB 컨테이너를 생성하고 오래된 BLOB 컨테이너에서 새로운 BLOB 컨테이너로 BLOB를 복사하는 것입니다. BLOB가 복사되면 이전 Blob 컨테이너를 삭제할 수 있습니다. 클라우드에서 복사 BLOB를 수행하는 경우이 작업은 비동기입니다. 따라서 얼룩 컨테이너를 삭제하기 전에 얼룩을 완전히 복사해야합니다.

+3

이제 "Microsoft Azure 저장소 탐색기"를 사용하여이 작업을 수행 할 수 있습니다. Nuri Tasdemir의 대답을 참조하십시오. – tmutton

+0

@tmutton 이것은 플랫폼 기능이 아니라 도구 기능입니다. –

+1

문제의 해결책입니다. – tmutton

-1

listing container을 확인하십시오. 모든 얼룩을 나열하고 새로운 얼룩에 쉽게 복사 할 수 있습니다.

더 유용한 자료가 있습니다.

0

이 RenameBlob 메서드를 사용하면 Azure 컨테이너에서 폴더 또는 파일의 이름을 바꿀 수 있습니다.

  • album1 /에서는 image1.jpg ->/image1.jpg album2
  • album1 /에서는 image1.jpg -> album1/에서는 image2.jpg

HTH

public class AzureStorageService 
{ 
    readonly CloudStorageAccount _storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); 

    public void RenameBlob(string oldName, string newName) 
    { 
     var blobClient = _storageAccount.CreateCloudBlobClient(); 
     var container = blobClient.GetContainerReference("MyContainer"); 

     var blobs = container.GetDirectoryReference(oldName).ListBlobs(); 

     foreach (var item in blobs) 
     { 
      string blobUri = item.Uri.ToString(); 

      var oldBlob = container.GetBlockBlobReference(blobUri); 
      var newBlob = container.GetBlockBlobReference(blobUri.Replace(oldName, newName)); 

      newBlob.StartCopyFromBlob(oldBlob); 

      oldBlob.Delete(); 
     } 
    } 
} 
+0

이 방법은 폴더 이름 만 바꿉니다. – f0rza

+2

또한 경찰 작업이 진행되는 동안 이전 BLOB를 삭제하는 것이 좋은지 잘 모르겠습니다. 'StartCopyFromBlob'에서 반환했기 때문에 작업이 완료된 것은 아닙니다. –

6

이제 컨테이너의 이름을 Microsoft의 "Microsoft Azure 저장소 탐색기 "(버전 0.8.3 이후). 이 도구를 사용하여 하늘색 테이블과 파일 공유의 이름을 바꿀 수도 있습니다. 출시 노트 here을 참조하십시오.

이 기능에는 사용 중에 다음과 같은 고지 사항이 있습니다.

새 이름으로 복사 한 다음 원본 항목을 삭제하면 이름을 바꿀 수 있습니다. BLOB 컨테이너의 이름을 바꾸면 현재 컨테이너의 속성과 메타 데이터가 손실되고 BLOB가 많으면 시간이 오래 걸릴 수 있습니다.

따라서 실제 이름 바꾸기가 아니라 읽기/쓰기/거래 비용이 발생합니다.

관련 문제