在世界各地同步大量数据的最佳方式是什么?
-
04-07-2019 - |
题
我有大量数据需要在全球 4 或 5 个站点上保持同步,每个站点大约有 0.5 TB。该变化(添加或更改)每天大约 1.4 GB,并且数据可能在四个站点中的任何一个发生变化。
很大一部分 (30%) 的数据是重复的包(可能是打包的 JDK),因此解决方案必须包括一种方法来获取本地计算机上存在此类内容并抓取它们的事实从另一个网站下载。
版本控制不是问题,这本身不是代码库。
我只是感兴趣是否有任何解决方案(最好是开源的)接近这样的事情?
我使用 rsync 的宝贝脚本不再满足要求,我想做更复杂、智能的同步。
谢谢
编辑 :这应该是基于 UNIX 的:)
其他提示
听起来像BitTorrent的工作。
对于每个站点的每个新文件,创建一个bittorrent种子文件并将其放入可通过Web访问的集中式目录中。
然后每个站点下载(通过bittorrent)所有文件。这将使您获得带宽共享和自动本地副本重用。
实际配方将取决于您的需要。 例如,您可以为每个主机上的每个文件创建1个bittorrent种子,并将种子文件的修改时间设置为与文件本身的修改时间相同。既然你每天都会这样做(每小时?),最好使用像“make”这样的东西。 (重新)仅为新文件或更新文件创建种子文件。
然后将所有种子文件从所有主机复制到集中位置(“tracker dir”),选项“仅在更新时覆盖”。这将为您提供所有文件的所有最新副本的一组torrent种子。
然后每个主机下载所有种子文件(再次,如果更新设置,则“覆盖”)并在所有这些文件上启动bittorrent下载。这将下载/重新下载所有新的/更新的文件。
Rince并重复,每天。
顺便说一下,正如你在评论中所说的那样,没有“自己下载”。如果文件已存在于本地主机上,则将验证其校验和,并且不会进行下载。你有很多选择:
- 你可以尝试设置一下 复制数据库 存储数据。
- 使用组合 同步 或者 远程传输协议 和自定义脚本,但这不适合您。
- 使用 git 具有最大压缩的存储库并使用一些脚本在它们之间进行同步
- 由于数据量相当大,而且可能很重要,因此可以在聘请专家时进行一些定制开发;)
检查超级灵活....它非常酷,没有在大规模环境中使用它,但在3节点系统上它似乎完美。
听起来像 Foldershare 的工作
您是否尝试过rsync的 detect-renamed
补丁( http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff )?我自己没有尝试过,但我想知道它是否会检测到不仅重命名,还会检测重复文件。如果它不会检测到重复的文件,那么,我想,有可能修改补丁来实现这一点。