【发布时间】:2012-11-09 21:01:51
【问题描述】:
不久前,我向question 询问了如何将大量 blob 从一个帐户复制到另一个帐户。我发现的最佳解决方案是使用新的Copy Blob API,它允许在帐户之间复制 blob 而无需下载它们。
从那以后我测试了新的 API(现在可以在 Azure SDK 中使用,至少在最新的gitHub version 中)并且我的基准测试显示了显着的改进 - 而复制 90MB 需要 1.5 分钟blob “旧方式”(即下载,然后上传),只需 10 秒即可通过 Copy Blob 进行复制。这是个好消息。
现在,坏消息:复制 Blob API 是异步的,这意味着它会立即返回,我需要轮询目标 blob 的属性以了解复制何时完成。原则上这很好,但是当我要复制数千个 blob 时效率极低。
所以我的问题是:使用 Copy Blob API 将数千个(在我的情况下,超过 600,000 个)blob 从一个存储帐户复制到另一个存储帐户时,有什么好的、有效的方法来确定复制何时完成?
这里有一些代码,超级慢,可以找出完成百分比:
foreach (ICloudBlob blob in cloudBlobContainer.ListBlobs())
{
totalCount++;
// TOO SLOW!
ICloudBlob blobDetails = cloudBlobContainer.GetBlobReferenceFromServer(blob.Name);
if (blobDetails.CopyState.Status == CopyStatus.Success)
{
successCount++;
}
}
【问题讨论】:
标签: azure azure-storage azure-blob-storage