在全球范围内同步大量数据的最佳方法是什么?

时间:2008-10-24 15:12:38

标签: unix networking synchronization large-files

我有大量数据可以在全球4到5个站点保持同步,每个站点大约有半个TB。这会每天更改(添加或更改)大约1.4千兆字节,并且数据可以在四个站点中的任何一个处更改。

很大一部分(30%)的数据是重复的软件包(也许是打包的JDK),因此解决方案必须包含一种方法,即在本地计算机上存在这样的事情。抓住他们,而不是从其他网站下载。

版本控制不是问题,这不是代码库本身。

我只是感兴趣,是否有任何解决方案(最好是开源)接近这样的事情?

我使用rsync的宝贝脚本不再削减芥末,我想做更复杂,更智能的同步。

由于

编辑:这应该是基于UNIX的:)

7 个答案:

答案 0 :(得分:12)

您是否尝试过Unison

我用它取得了不错的成绩。它基本上是一个更聪明的rsync,也许就是你想要的。有一个列表,比较文件同步工具here

答案 1 :(得分:5)

听起来像BitTorrent的工作。

对于每个站点的每个新文件,创建一个bittorrent种子文件并将其放入可通过Web访问的集中式目录中。

然后每个站点下载(通过bittorrent)所有文件。这将使您获得带宽共享和自动本地副本重用。

实际配方将取决于您的需要。 例如,您可以为每个主机上的每个文件创建1个bittorrent种子,并将种子文件的修改时间设置为与文件本身的修改时间相同。既然你每天都会这样做(每小时?),最好使用像“make”这样的东西(重新)为新的或更新的文件创建种子文件。

然后将所有主机文件从所有主机复制到集中位置(“tracker dir”),并选择“仅在更新时覆盖”选项。这将为您提供所有文件的所有最新副本的一组torrent种子。

然后每个主机下载所有种子文件(再次,“覆盖如果更新设置”)并开始所有种子文件的bittorrent下载。这将下载/重新下载所有新的/更新的文件。

Rince并重复,每天。

顺便说一下,正如你在评论中所说的那样,没有“自己下载”。如果文件已存在于本地主机上,则将验证其校验和,并且不会进行下载。

答案 2 :(得分:2)

Red Hat Global Filesystem的内容如何,​​以便整个结构在每个站点上分成多个设备,而不是在每个位置都进行复制?

或许是商业网络存储系统,例如来自LeftHand Networks(免责声明 - 我不知道成本,也没有使用它们。)

答案 3 :(得分:1)

你有很多选择:

  • 您可以尝试设置复制数据库来存储数据。
  • 结合使用 rsync lftp 和自定义脚本,但这不适合您。
  • 使用 git repos进行最大压缩,并使用某些脚本在它们之间进行同步
  • 由于数据量相当大,而且可能很重要,可以聘请专家进行一些自定义开发;)

答案 4 :(得分:1)

检查超级灵活....它非常酷,没有在大规模环境中使用它,但在3节点系统上它似乎完美。

答案 5 :(得分:0)

听起来像是Foldershare

的工作

答案 6 :(得分:0)

您是否尝试过rsync(http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff)的detect-renamed补丁?我自己没有尝试过,但我想知道它是否会检测到不仅重命名,还会检测重复文件。如果它不会检测到重复的文件,那么,我想,有可能修改补丁来实现这一点。