如何直接将 blob 从一个存储帐户转移到另一个存储帐户,而无需先在内存中下载?

Posted

技术标签:

【中文标题】如何直接将 blob 从一个存储帐户转移到另一个存储帐户,而无需先在内存中下载?【英文标题】:How to transfer blob from one storage account to another storage account directly without downloading first in memory? 【发布时间】:2020-04-17 17:56:00 【问题描述】:

我想直接将 Blob 从一个存储帐户转移到 C# Web API 中的另一个存储帐户,而不是先在内存中下载?

我不希望先下载再上传到另一个存储帐户的费用。

我只想将 blob 从一个存储帐户转移到另一个存储帐户,而无需支付额外费用。

【问题讨论】:

【参考方案1】:

AzCopy 是您大部分时间想要的。它旨在完全满足您的需求,并且可以通过 C# 调用。这是一个full sample,用于通过 C# 将 blob 复制到另一个存储帐户。

您像往常一样使用 BlobStorage SDK,最后只需像这样复制 blob:

await TransferManager.CopyAsync(sourceBlob, destinationBlob, true, null, context, cancellationSource.Token);

完整源代码:https://github.com/azure-samples/storage-dotnet-data-movement-library-app

【讨论】:

+1 来自我,它使用我的答案中暗示的用于服务器端复制的新 API(我之前没有完全研究过),这可能比你更适合你数据工厂。【参考方案2】:

欢迎来到 ***。

值得一提的是,如果您将数据移到 Azure 区域之外,并且您的两个 Blob 存储帐户都在同一区域内,那么您只需支付带宽费用,并且不会产生出口费用*。

Azure Data Factory 是 Azure 规定的数据移动机制,默认情况下,它的数据移动机制在距离目标最近的区域运行。它有一个 c# SDK 来触发数据移动。这不是免费的,但成本很低。

或者,对于更简单的事情,可以使用 Azure Logic App,它具有用于存储帐户的连接器,但是,Azure 数据工厂制造用于数据移动。基本上,在 Azure 区域内运行的任何产品都会限制您的出口成本。

另一个非常引人注目的选项是新的存储 API,它允许在服务器端完成跨存储帐户复制:https://azure.microsoft.com/en-us/updates/new-copy-apis-for-efficient-data-copy/ 我自己没有使用过这个,因为我通常需要 Azure 数据工厂的更高级功能,但听起来确实很适合您探索更多内容。

在生产中进行任何操作之前,证明任何 PAYG 操作作为概念证明和监控成本总是值得的 - 以避免意外!

【讨论】:

以上是关于如何直接将 blob 从一个存储帐户转移到另一个存储帐户,而无需先在内存中下载?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 中的 PayPal API 直接将资金从一个个人帐户转移到另一个帐户

如何将付费安卓应用从一个谷歌账户转移到另一个谷歌账户

如何将 iOS 应用程序从一个开发者帐户转移到另一个帐户? [关闭]

Azure Blob 存储:防止 Blob 复制到另一个存储帐户的最佳方法?

将存储数据从一个 Azure 帐户复制到另一个

如何将 Azure 存储帐户内容(表、队列、blob)复制到其他存储帐户