使用文件系统监视程序在2台计算机之间同步文件夹,以便每次修改文件后立即将其复制


20

我有:

  • 我通过IP 203.0.113.0端口1234上的SSH连接的Linux服务器

  • 家用计算机(在路由器后面),公用IP 198.51.100.17,它是Debian或Windows + Cygwin

使文件夹/home/inprogress/ 同步(双向),最简单的方法是什么,有点像rsync,但是使用filesystem watcher,以便每次修改文件时,立即将其复制到另一侧?(即无需手动调用同步程序)

我正在寻找命令行/无GUI解决方案,因为服务器没有头。

有Linux / Debian内置解决方案吗?


7
您正在描述syncthing
库萨兰达

lsync,但我不知道它是否对双向同步有用。
Ulrich Schwarz,

lsync,csync2,inotify + rsync,但我希望在本地网络设置中使用它们。
Rui F Ribeiro

2
在文件系统级别,这听起来像OCFS2,甚至是NBD上的RAID 1
roaima

3
单向同步很容易。双向同步意味着解决冲突(是的,它将在某个时候发生),这反过来又意味着某种类型的UI(尽管不一定是GUI)。
jcaron

Answers:


23

在@Kusalananda发表评论之后,我终于花了几个小时来测试此用例的Syncthing,它的效果很好。它会自动检测双方的更改,并且复制非常快。

示例:假设您正在server.py使用自己喜欢的记事本软件在本地工作,请按CTRL + S(保存)。几秒钟后,它会自动复制到远程服务器上(没有任何弹出对话框)。

我注意到的一件很棒的事情是,您不必考虑带有Syncthing的家用计算机和服务器的IP:每个“设备”(计算机,服务器,电话等)都有唯一的DeviceID,并且如果共享与另一台设备的ID,它将自动找出它们应如何相互连接。

去做:

  • 家用计算机端(Windows或Linux):

    使用常规的Syncthing浏览器内配置工具

  • VPS端:

    首先将VPS与端口转发连接:

    ssh <user>@<VPS_IP> -L 8385:localhost:8384
    

    后一个选项会将在端口8384上侦听的VPS的Syncthing Web配置工具重定向到家用计算机的端口8385。

    然后在VPS上运行此命令:

    wget https://github.com/syncthing/syncthing/releases/download/v0.14.52/syncthing-linux-amd64-v0.14.52.tar.gz 
    tar xvfz syncthing-linux-amd64-v0.14.52.tar.gz
    nohup syncthing-linux-amd64-v0.14.52/syncthing &
    

    然后在家用计算机的浏览器上,打开http:// localhost:8385:这将是VPS的Syncthing配置!


我尝试过的其他解决方案:


我刚刚注意到的Syncthing的其他优点:

  • 可以减少fsWatcherDelaySconfig.xml102秒,这样做CTRL + S,2秒后后(+时间上传,即小于1秒的小文本文件),它是在其他计算机上

  • 如果您同步位于同一本地网络中的两台计算机(通过互相提供DeviceID,无需关心本地IP地址),它将自动注意到它不需要通过Internet进行传输,但是它可以在当地交易。这很棒,并允许phone <--> computer通过WiFi连接到同一家庭路由器的两个设备都非常快速地进行速度传输(4 MB / s!)同步... ...而在Dropbox同步下,它在ADSL上将停留在100 KB / s !(我的ADSL在上传时限制为100 KB / s)


@sudodus几个星期前,一个朋友已经向我推荐了它,并且我曾尝试将其用于计算机<->手机同步,但是我没想到它对于开发服务器也是如此有效!编辑代码,点击保存,1 2 3在另一台计算机上!
Basj

1
+1。我有很长一段时间都遇到相同的问题,使用rsync +一些脚本多年,最后在2个月前尝试了syncthing,csync,unison和其他一些问题。适用于任何数量的计算机,即使其中一些没有永久的网络连接,它也可以很好地工作。可以推荐100%。
Guntram Blohm支持Monica 18'Nov

1
非常高兴您已经测试了所有这些不同的解决方案@GuntramBlohm!如果您有几分钟的时间来发布答案,以给出您的反馈/同步,rsync,csync,unison等之间的优缺点,那么对于将来的参考将非常有趣!
Basj

16

听起来像Unison应该做的。

Unison是用于OSX,Unix和Windows的文件同步工具。它允许将文件和目录集合的两个副本存储在不同的主机(或同一主机上的不同磁盘)上,分别进行修改,然后通过将每个副本中的更改传播到另一个副本来使其更新。

它确实具有可选的GUI,可以使冲突解决稍微容易一些,但是所有操作也可以使用基于文本的用户界面来完成。您也可以预定义如何解决完全无人值守操作的冲突。

有一个文件监视程序(fsmonitor)组件,可以在需要时触发同步。在手册中搜索“重复手表”以获取详细信息。

如Debian看起来有正确的版本(2.48+)盒子的包装了


谢谢!文件监视程序fsmonitor是否随Unison一起提供,还是我们必须安装此工具并手动将其与Unison连接?
Basj

1
@Basj它包含在最近足够的版本中,并且设置起来确实很简单。我已经添加了手册的链接。
TooTea

我过去曾在旧Mac中使用过它。它只是最小的麻烦。虽然不知道它是否适合服务器方案。
Rui F Ribeiro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.