Bas*_*asj 22 networking filesystems synchronization
我有:
我通过 SSH 在 IP 203.0.113.0 端口 1234 上连接的 Linux 服务器
一台家用电脑(在路由器后面),公共 IP 198.51.100.17,是 Debian 或 Windows+Cygwin
让文件夹/home/inprogress/ 同步(双向)最简单的方法是什么,有点像rsync,但是使用文件系统观察器,以便每次修改文件时,它都会立即复制到另一侧?(即无需手动调用同步程序)
我正在寻找命令行/无 GUI 解决方案,因为服务器是无头的。
是否有 Linux/Debian 内置解决方案?
Bas*_*asj 24
按照@Kusalananda 的评论,我终于花了几个小时来测试这个用例的Syncthing,它工作得很好。它会自动检测双方的变化,复制速度非常快。
示例:假设您正在本地使用server.py自己喜欢的记事本软件,按 CTRL+S(保存)。几秒钟后,它会自动复制到远程服务器上(没有任何弹出对话框)。
我注意到的一件好事是,您不必考虑使用 Syncthing 的家用计算机和服务器的 IP:每个“设备”(计算机、服务器、电话等)都有一个唯一的 DeviceID,如果您共享与另一个设备的 ID,它会自动找出它们应该如何相互连接。
去做:
家用电脑端(Windows 或 Linux):
使用普通的 Syncthing 浏览器内配置工具
VPS端:
首先通过端口转发连接VPS:
ssh <user>@<VPS_IP> -L 8385:localhost:8384
Run Code Online (Sandbox Code Playgroud)
后一个选项会将监听端口 8384 的 VPS 的 Syncthing 网络配置工具重定向到家用计算机的端口 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 &
Run Code Online (Sandbox Code Playgroud)
然后在家用电脑的浏览器上,打开http://localhost:8385:这将是 VPS 的 Syncthing 配置!
我试过的其他解决方案:
SSHFS 使用本教程。请注意,在本教程中,他们不使用sshfs-win,而是使用win-sshfs(这是两个不同的项目)。我两个都试过了,但我无法使它们中的任何一个工作(可能是我的 VPS 配置有问题)。
这里也有一个有趣的参考:https : //softwarerecs.stackexchange.com/questions/13875/windows-sshfs-sftp-mounting-clients
我刚刚注意到的 Syncthing 的其他优点:
您可以fsWatcherDelayS将config.xmlfrom减少10到2秒,以便在执行 CTRL+S 后,2 秒后(+ 上传时间,即小文本文件不到 1 秒)它在另一台计算机上
如果你同步同一个局域网内的两台电脑(只需给对方设备ID,不需要关心本地IP地址),它会自动注意到它不需要通过互联网传输,但它可以在当地交易。这很棒,并且允许phone <--> computer通过 WiFi 连接到同一个家用路由器的两者的同步传输速度非常快(4 MB/s!)......而它在使用 Dropbox 同步的 ADSL 上会停留在 100 KB/s !(我的 ADSL 上传速度限制为 100 KB/s)
Too*_*Tea 18
听起来Unison应该可以完成这项工作。
Unison 是 OSX、Unix 和 Windows 的文件同步工具。它允许文件和目录集合的两个副本存储在不同主机(或同一主机上的不同磁盘)上,分别修改,然后通过将每个副本中的更改传播到另一个副本来更新。
它确实有一个可选的 GUI,可以使解决冲突更容易一些,但也可以使用基于文本的用户界面来完成所有工作。您还可以预定义如何解决完全无人值守操作的冲突。
有一个文件观察器 (fsmonitor) 组件可以在需要时触发同步。在手册中搜索“repeat watch”了解详情。
如Debian看起来有正确的版本(2.48+)盒子的包装了。