如何克隆 blob 容器和内容

How to clone blob container and contents

总结
我已经获得了对一个相当古老的网站的支持,该网站在 Azure 中存储了一堆 blob。我想做的是将我所有的 blob 从现场复制到测试环境,这样我就可以在不影响用户的情况下使用它们。

建筑
该网站混合了 VB 网络表单和 MVC,与 Azure blob 服务(例如 https://x.blob.core.windows.net/LiveBlobs)进行通信。

测试站点反映了实时设置,除了它指向同一存储帐户中的不同 blob 容器(例如 https://x.blob.core.windows.net/TestBlobs

问题

我调查过的事情
我花了很多时间寻找答案,但我发现的是 copying between storage accounts or copying single blobs.

我也找到了AzCopy which looks promising,但看起来它会一个一个地复制文件,所以我担心它最终会花费很长时间并且花费很多。

我是 Azure 的新手,所以如果这是一个愚蠢的问题或者我错过了一些重要的细节,请原谅我。如果您需要,我非常乐意添加任何额外信息。

Can I copy all of the blobs from live to test without downloading them? They would need to maintain the same names.

是的,你可以。复制 blob 是一项 asynchronous server-side 操作。您只需告诉 blob 服务要复制的 blob 和目标详细信息,它就会为您完成这项工作。无需先下载再上传到目的地。

How do I work out what it will cost to do this? The live blob storage is roughly 130GB, but it should just be copying the data within the same data centre right?

因此,在计算成本时需要考虑 3 件事:1) Storage costs、2) transaction costs 和 3) data egress costs

由于复制的 blob 将存储在某个地方,它们会消耗存储空间,您将产生存储成本。

复制操作将对源 blob 执行一些读取操作,然后对目标 blob 执行写入操作(以创建它们),因此您将不得不承担交易费用。对于每个 blob 副本,您至少可以预期 2 个事务 - 在源上读取和在目标上写入(尽管可以有更多事务)。

如果目标存储帐户与源存储帐户不在同一区域,则会产生数据传出费用。只要两个存储帐户位于同一区域,就不会发生这种情况。

您可以使用 Azure Storage Pricing Calculator 来了解您要花多少钱。

I've also found AzCopy which looks promising but it looks like it would copy the files one by one so I'm worried it would end up taking a long time and costing a lot.

Blob 总是一个接一个地复制。跨存储帐户复制始终是异步服务器端操作,因此您无法真正预测完成复制操作需要多少时间,但根据我的经验,它非常快。如果你想控制复制 blob 的时间,你需要先下载它们然后上传它们。 AzCopy supports this mode as well.

就成本而言,我认为当你说它会花费很多时,它是一个相对的术语。但总的来说,Azure 存储非常便宜,130 GB 的数据量并不大。