【发布时间】:2012-09-11 13:18:54
【问题描述】:
有什么方法可以在 windows azure 中重命名 blob 容器名称?
【问题讨论】:
标签: c# azure azure-storage
有什么方法可以在 windows azure 中重命名 blob 容器名称?
【问题讨论】:
标签: c# azure azure-storage
现在,您可以使用 Microsoft 的“Microsoft Azure Storage Explorer”(0.8.3 版之后)重命名容器。您还可以使用此工具重命名 azure 表和文件共享。请参阅发行说明here。
请注意,此功能在使用过程中有如下免责声明。
通过复制到新名称,然后删除源项目来进行重命名。重命名 Blob 容器当前会丢失容器的属性和元数据,如果有很多 Blob,可能需要一段时间。
因此,这并不是幕后的实际重命名,并且会产生读/写/交易成本。
【讨论】:
更新
请参阅下面 Nuri Tasdemir 的回答。
没有。不能在 Windows Azure 中重命名 Blob 容器。您可以做的是使用新名称创建一个新的 Blob 容器,并将 Blob 从旧 Blob 容器复制到新容器。复制 Blob 后,您可以删除旧的 Blob 容器。请注意,如果您在 Cloud 中执行复制 blob,则此操作是异步的。因此,请确保在删除 blob 容器之前完全复制 blob。
【讨论】:
没有。不能在 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
【讨论】:
此 RenameBlob 方法将允许您重命名 Azure 容器中的文件夹或文件。
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();
}
}
}
【讨论】:
StartCopyFromBlob返回并不意味着操作完成。