与断开连接的操作交叉同步主目录(Linux / Ubuntu)

这是我正在努力工作的场景。 我有三台机器,J,T和R需要最终得到相同的数据(稍有暂时的差异是好的)。 J和T是每天打开和closures的桌面。 R是一个远程文件服务器。 J和T上的用户可以更改一个目录(通过组权限共享)和他们自己的主目录中的共享数据。 两台J和T机器中只有一台在同一时间运行是相当普遍的。 互联网连接到R是相当可靠的,但是R很远,延迟使得它不适合作为主要的文件服务器。 我尝试使用NFS,这是非常痛苦的。 连接不够可靠,无法随时访问。

在这一点上,这不是一个选项,可以放入本地服务器,通过NFS或CIFS提供共享驱动器。 这样做会更容易,但是这不是一个选项。

我尝试了交叉安装的NFS导出,并设法得到几个简单的shell脚本来挂载驱动器等,但是如果J从T挂载驱动器并将其用作基本文件共享,然后T被closures,数据改变将是丢失。 所以我需要一些方法来不断地同步数据。

我看着rsync,最终find了csync(而不是csync2,这是一个完全不同的项目)。 这允许我在机器之间运行定期的同步。 然而,这是在cron而不是按需求完成的。 我还发现lsyncd,看起来好像是在两个工作站都启动的情况下复制更改,而不是在本地系统closures和另一个工作站正在进行更改时弄清楚发生了什么变化。

我看着Ubuntu One,Dropbox等,免费的文件限制是一个问题。 预算是非常非常有限的,要避免经常性费用。 iFolder可能是一个选项,但看起来它需要一个服务器的地方。

我更喜欢的是这样的:

  • 将远程和本地副本安装到工作目录中。 在那里进行更改,并让文件系统将它们推送到其他位置。

  • login时,启动与其他机器的重新同步,以赶上机器closures时所做的任何更改。

两个工作站中的一个工作站可能会一次closures几天,所以可能会积累很多变化。 只有两个通常的用户,所以变化率不是很高,但一个星期后,他们build立起来了。

在文件系统上是否有一个类似RAID1的FUSE模块? 由于Gluster FS,AFS和NBD这些东西可能会断开很长时间,所以似乎并不合适。

如果有办法做NFS客户端故障转移(其他工作站停机,请使用本地副本),这也可以工作。 我已经做了一些研究,除了一些提到“autofs应该支持,但没有”,我没有find太多。

我更喜欢基于NFS / CIFS的解决scheme,因为那样我就可以获得文件locking,而且我们不会遇到用户试图同时修改相同文件的潜在问题。 但我不知道如何解决客户端故障转移。

你将如何解决这个问题? 同样,有一个本地文件服务器目前不是一个选项。

Coda应该符合你的要求。 这是一个networking文件系统,强烈支持本地caching和断开客户端操作。

如果你想回到同步工具,一定要一起看。 这是一个基于rsync库的双向同步,它可以处理被修改的东西。 它可以将存在冲突(双方更新)的文件保存到备份文件夹中。

同步仍然需要由用户,cron或某种启动脚本启动。