【问题标题】:Copy Blob from one storage account to another in Azure in c#在 c# 中将 Blob 从一个存储帐户复制到 Azure 中的另一个帐户
【发布时间】:2017-02-06 09:53:04
【问题描述】:

我有一个包含我的用户简历的 blob。

我的网站已上线。现在我想用不同的存储帐户从一个 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 */);

        }

但我担心的是:如果此复制操作正在运行并且任何用户更新了其中一个 Cv,那么它会影响实时站点还是复制操作?

【问题讨论】:

  • 将复制开始复制操作时的 blob 版本。

标签: c# azure azure-storage


【解决方案1】:

您正在制作异步服务端副本 (isServiceCopy = true)。如果源在复制期间发生更改,则其 ETag 会更改,从而使副本无效。然后,您需要重新启动失败的副本。

注意:如果您在复制之前拍摄快照,那么您可以安全地复制快照,因为它知道其内容无法更改(即使基础 blob 更改)。然后您需要处理清理快照,但这是解决源 blob 上的并发写入问题的一种方法(或者您可以简单地重试副本,正如我所提到的)。

我发布了一个类似问题的答案,here

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2021-06-27
    • 2022-12-21
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多