我已经使用lsyncd将本地文件夹同步到我拥有的服务器,使用rsyncssh和配置文件,如下所示:
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsyncssh,
source = "/Users/user/source",
host = "root@xxx.xxx.xxx.xxx",
targetdir = "/tmp/data",
rsync = { binary = "/usr/local/bin/rsync" }
}
现在,我想执行“拉”以将另一台计算机(不同网络)上的本地目录与该远程服务器同步。
我正在使用此配置文件:
settings = {...}
sync {
default.rsync,
source = "root@xxx.xxx.xxx.xxx:/tmp/data",
target = "/home/user/dest",
rsync = { binary = "/usr/local/bin/rsync", _extra = { "-P", "-e", "ssh" } }
}
但是我收到了这个错误:
Error: failure getting absolute path of [root@xxx.xxx.xxx.xxx:/tmp/data]
Error: Cannot access source directory: root@xxx.xxx.xxx.xxx:/tmp/data
当然/ tmp / data存在,任何提示我做错了什么?
您是否知道是否可以像使用rsync一样使用lsyncd来保持本地文件夹与远程源“最新”?或者我可以将rsyncssh与远程源一起使用吗?
谢谢!
答案 0 :(得分:1)
lsyncd不能这样做,因为它不是这样设计的。它打算使用inotify事件来监视目录,然后启动rsync来完成繁重的任务。 inotify本质上是一个本地概念,而lsync实际上并不进行任何网络通信。
您需要做的是在服务器上运行lsyncd服务,该服务将启动配置为连接到客户端计算机的rsync。
这意味着您需要在本地计算机上设置ssh服务器。如果您的计算机没有合适的域名/ IP地址,或者位于NAT或防火墙后面,那么您需要设置ssh -R
反向隧道并将服务器路由到 - 客户端rsync通过它。
一旦设置好,它就可以正常工作,但老实说,您可能会发现使用SyncThing更容易。