我有大量数据可以在全球4到5个站点保持同步,每个站点大约有半个TB.这会每天更改(添加或更改)大约1.4千兆字节,并且数据可以在四个站点中的任何一个处更改.
很大一部分(30%)的数据是重复的软件包(也许是打包的JDK),因此解决方案必须包含一种方法,即在本地计算机上存在这样的东西,然后抓住它们从另一个网站下载.
版本控制不是问题,这不是代码库本身.
我只是感兴趣,是否有任何解决方案(最好是开源)接近这样的事情?
我的婴儿脚本使用rsync不再削减芥末,我想做更复杂,智能的同步.
谢谢
编辑:这应该是基于UNIX的:)
你试过Unison吗?
我用它取得了不错的成绩.它基本上是一个更聪明的rsync,也许就是你想要的.有比较文件同步工具的列表在这里.
听起来像BitTorrent的工作.
对于每个站点的每个新文件,创建一个bittorrent种子文件并将其放入集中的Web可访问目录中.
然后每个站点下载(通过bittorrent)所有文件.这将使您获得带宽共享和自动本地副本重用.
实际配方将取决于您的需要.例如,您可以为每个主机上的每个文件创建1个bittorrent种子,并将种子文件的修改时间设置为与文件本身的修改时间相同.既然你每天都会这样做(每小时?),最好使用像"make"这样的东西(重新)为新的或更新的文件创建种子文件.
然后,将所有主机文件从所有主机复制到集中位置("tracker dir"),并选择"仅在更新时覆盖"选项.这将为您提供所有文件的所有最新副本的一组torrent种子.
然后每个主机下载所有种子文件(再次,"覆盖如果更新设置")并开始所有种子文件的bittorrent下载.这将下载/重新下载所有新的/更新的文件.
Rince并重复,每天.
顺便说一下,正如你在评论中所说的那样,将不会"自行下载".如果文件已存在于本地主机上,则将验证其校验和,并且不会进行下载.