有没有一种工具可以挂钩两个目录并在发生变化时立即同步它们?

有没有一种工具可以挂钩两个目录并在发生变化时立即同步它们?

我在两台机器上有巨大的模拟目录,我想server在其中保持同步。cluster基本情况是文件很少发生变化,但是当模拟完成时,许多大文件会立即发生变化,我希望在它们关闭后立即进行同步。

因此,我认为使用 rsync 的 cronjob 并不理想,cronjob 因为它以固定的时间间隔调用 rsync,我可能会选择太大或太小,rsync 因为它不必检查文件的修改,因为我和模拟作业是唯一访问它们的作业。

所以我的想法是使用 inotify (参见这个问题)以循环检测模拟目录中的更改,并且然后fork 到 rsync 中以保存已更改的文件。但是我不确定这是否会意外地跳过分叉完成时关闭的文件。(并且可能由于 inotify 调用 rsync 再次同步刚刚同步的文件,我也会陷入无限循环......)所以在我在那里尝试太多之前,我重复我的问题:

有没有一种工具可以挂钩两个目录并在发生变化时立即同步它们?

(基本上这就像一个离线保管箱,我猜)

答案1

查看同步

Lsyncd 监视本地目录树事件监视器接口(inotify)。它会聚合并组合事件几秒钟,然后生成一个(或多个)进程来同步更改。默认情况下这是 rsync。因此,Lsyncd 是一种轻量级实时镜像解决方案,安装相对容易,不需要新的文件系统或块设备,并且不会影响本地文件系统的性能。

这不是双向的,但从你的问题我知道你也不需要它。如果需要双向同步,齐奏是一个很好的答案,除了没有 inotify 支持。另外,请查看这个问题

双向同步的第三件事是DRBD,块级实时同步系统,包含在主线内核中。不幸的是,由于它几乎是同步的,因此需要快速的互联网连接。

相关内容