使用文件系统观察器在两台计算机之间同步文件夹,以便每次修改文件时都会立即复制

使用文件系统观察器在两台计算机之间同步文件夹,以便每次修改文件时都会立即复制

我有:

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

  • 一台家用计算机(位于路由器后面),公共 IP 198.51.100.17,可以是 Debian 或 Windows+Cygwin

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

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

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

答案1

根据@Kusalananda的评论,我终于花了几个小时进行测试同步事物对于这个用例,它效果很好。它会自动检测双方的变化,并且复制速度非常快。

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

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

去做:

  • 家庭电脑端(Windows或Linux):

    使用普通的 Syncthing 浏览器内配置工具

  • VPS端:

    首先使用端口转发连接VPS:

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

    后一个选项会将 VPS 的 Syncthing Web 配置工具在端口 8384 上侦听的重定向到家庭计算机的端口 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://本地主机:8385:这将是 VPS 的 Syncthing 配置!


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


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

  • 您可以减少fsWatcherDelaySconfig.xml102,以便在执行 CTRL+S 后,2 秒后(+上传时间,即小文本文件不到 1 秒)它在另一台计算机上

  • 如果您同步位于同一本地网络中的两台计算机(只需互相提供 DeviceID,无需关心本地 IP 地址),它将自动地请注意,它不需要通过互联网中转,但可以在本地处理。这很棒,并且允许phone <--> computer通过 WiFi 连接到同一家庭路由器的两者以非常快的速度传输(4 MB/s!)同步......而在使用 Dropbox 同步的 ADSL 上它会停留在 100 KB/s ! (我的 ADSL 上传速度限制为 100 KB/s)

答案2

听上去像齐奏应该做这项工作。

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

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

有一个文件观察器(fsmonitor)组件可以在需要时触发同步。在以下位置搜索“重复观看”手册了解详情。

看起来 Debian 有正确的版本(2.48+)开箱即用

相关内容