有没有办法实时复制非常大的文件共享?

我有一个每小时cron的工作,从源文件夹中复制大约40GB的数据到一个新的文件夹,并在最后附加小时。

完成后,作业会除去24小时以上的任何东西。 这些数据在工作时间内经常变化,并在samba文件共享上。 以下是文件夹结构的外观:

\服务器\ Version.1
\服务器\ Version.2
\服务器\ Version.3

\服务器\ Version.24

每个新文件夹与最后一个文件夹的内容通常不会有太大的变化,因为这是一个小时工。

现在你可能会认为我是一个白痴设置梦想。 真相是,我刚刚发现。 它实际上已经使用了很多年,而且非常简单,任何人都可以删除整个40GB的共享空间(假设对话正在后台…删除成千上万的文件),通过将最新的副本移回到源代码比删除。

辉煌!

现在为止,我需要通过广域网链路高效地将这960GB的“大部分相似”数据复制到远程服务器,并且复制尽可能接近实时 – 考虑热备份,灾难恢复等。

我的第一个想法是rsync

完全失败。

Rsync看到它删除了24小时的文件夹,并添加了一个新的文件夹与30GB的数据同步! 我也看了rdiff备份和统一,他们都似乎使用类似的algorithm,并没有保持足够的元数据来做到这一点智能化。

最好的事情,我可以find“开箱即可”做到这一点是Windows Server“分布式文件系统复制”,它使用“远程差分压缩” – 在阅读关于这是如何工作的背景信息,它实际上看起来像我需要。

问题:两台服务器都在运行Linux。 D'哦! 我正在看的一个方法是这样的,说这是上午5点,cron工作完成:

  1. 新版本5文件夹到达本地服务器上
  2. SSH到远程服务器并将版本4复制到版本5
  3. 在本地服务器上运行rsync,将更改推送到远程服务器。 Rsync终于知道在版本4和版本5之间做差异拷贝

有更聪明的方法尽可能接近实时地复制Samba股票吗?

任何在Linux上执行“远程差分压缩”的东西?

你应该认真考虑DRBD 。 DRBD是一个基于TCP-IP软件的RAID1。 它将实时在任何链接上复制块设备。 每次修改HD块时,都会复制它。

这是FS-agnostic因此你可以把任何你想要的FS放在它上面。 它也将与心跳同时工作,这将允许您在原始节点死亡后立即启动热备份。