在 Azure 存储 blob 容器之间保持增量同步

在 Azure 存储 blob 容器之间保持增量同步

我有三个不同的 Azure 存储 Blob 容器,用于提供网站内容,一个用于生产,一个用于暂存,一个用于开发。

我的目标是每天或每周同步登台和开发,以便它们与生产相匹配。

我在 PowerShell 中整理了一些东西,理论上可以运行,但速度慢且繁琐。它需要删除暂存和开发容器,然后复制整个生产容器两次。对于仅 20k 个项目,整个过程需要一个多小时。

考虑到一周内可能仅有几百件物品发生变化,增量操作可能会完成得更快。

有没有人见过可以在 Azure 存储 blob 容器之间进行增量复制的工具或方法?我最终可能会编写自己的工具,但想看看目前是否有这样的工具。

答案1

不幸的是,没有好的办法可以做到这一点。正如您已经看到的,像 AZCopy 这样的工具会为您移动文件,但它们不会进行增量复制或同步。

您可以在 PowerShell 中自己执行某些操作,运行 Blob 并检查它们是否存在于目标中,然后比较修改日期或文件哈希之类的内容,但不幸的是,我无法想象这会特别快。

答案2

我今天重新查看了 AzCopy 工具,发现它已经取得了很大进展,并且完美地满足了这一目的。标志是 AzCopy Sync,还有许多控制选项,例如删除目标上不存在的目标文件。

可能是由于 Azure 架构或基础架构的改进,传输速度也非常快。它在不到 60 秒的时间内完成了 10GB 的初始同步。以前这需要一个小时或更长时间。

答案3

我知道这是一篇有点老的帖子,但我刚刚看到它,想提出一个想法,它需要每天/每周运行有什么原因吗?您可以使用带有 blob 存储触发器的 Logic App 或带有 blob 触发器的函数?这会立即触发,因此存储帐户始终保持同步。

另一种选择是使用触发器将增量插入存储帐户/数据库,然后每天/每周批量处理更改

相关内容