gpt4 book ai didi

c# - 在 C# 中将 Blob 从一个存储帐户复制到 Azure 中的另一个存储帐户

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:51 25 4
gpt4 key购买 nike

我有一个 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 */);

}

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

最佳答案

您正在制作异步服务端副本 (isServiceCopy = true)。如果复制过程中源发生变化,其 ETag 也会发生变化,从而导致复制失效。然后,您需要重新启动失败的副本。

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

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

关于c# - 在 C# 中将 Blob 从一个存储帐户复制到 Azure 中的另一个存储帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com