【问题标题】:How to rename the container name in windows azure?如何在 Windows azure 中重命名容器名称?
【发布时间】:2012-09-11 13:18:54
【问题描述】:

有什么方法可以在 windows azure 中重命名 blob 容器名称?

【问题讨论】:

标签: c# azure azure-storage


【解决方案1】:

现在,您可以使用 Microsoft 的“Microsoft Azure Storage Explorer”(0.8.3 版之后)重命名容器。您还可以使用此工具重命名 azure 表和文件共享。请参阅发行说明here

请注意,此功能在使用过程中有如下免责声明。

通过复制到新名称,然后删除源项目来进行重命名。重命名 Blob 容器当前会丢失容器的属性和元数据,如果有很多 Blob,可能需要一段时间。

因此,这并不是幕后的实际重命名,并且会产生读/写/交易成本。

【讨论】:

    【解决方案2】:

    更新

    请参阅下面 Nuri Tasdemir 的回答。


    没有。不能在 Windows Azure 中重命名 Blob 容器。您可以做的是使用新名称创建一个新的 Blob 容器,并将 Blob 从旧 Blob 容器复制到新容器。复制 Blob 后,您可以删除旧的 Blob 容器。请注意,如果您在 Cloud 中执行复制 blob,则此操作是异步的。因此,请确保在删除 blob 容器之前完全复制 blob。

    【讨论】:

    • 现在可以使用“Microsoft Azure 存储资源管理器”来执行此操作。请参阅 Nuri Tasdemir 的回答。
    • @tmutton 这是工具功能而非平台功能。
    • 解决问题的办法。
    • @Ofer Zelig。我回滚了你的编辑。恕我直言,如果您对答案不满意,而不是将其编辑为完全不同的内容,您可以随时投票或添加自己的答案。
    • @OferZelig... 有趣的讨论!我已经更新了我的答案并通知人们寻找 Nuri 的答案。希望这会有所帮助。
    【解决方案3】:

    我在存储资源管理器 v1.15.1 中找不到重命名功能,但我确实使用了克隆选项来创建副本并删除旧容器。

    【讨论】:

      【解决方案4】:

      没有。不能在 Windows Azure 中重命名 Blob 容器。

      从旧存储复制到新存储的代码

      AzCopy /Source:https://oldstorage.blob.core.windows.net/oldstorage /Dest:https://newstorage.blob.core.windows.net/newstorage /SourceKey:sourcekey /DestKey:destkey /S /XO

      【讨论】:

        【解决方案5】:

        此 RenameBlob 方法将允许您重命名 Azure 容器中的文件夹或文件。

        • album1/image1.jpg -> album2/image1.jpg
        • 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();
                }
            }
        }
        

        【讨论】:

        • 此方法只重命名文件夹
        • 另外,我不知道在 cop 操作正在进行时删除旧 blob 是否是个好主意。仅仅因为您从StartCopyFromBlob返回并不意味着操作完成。
        猜你喜欢
        • 1970-01-01
        • 2021-10-26
        • 2015-08-02
        • 2021-05-25
        • 1970-01-01
        • 2020-03-27
        • 1970-01-01
        • 1970-01-01
        • 2022-10-20
        相关资源
        最近更新 更多