[英]Use lsyncd to update a local folder with a remote source?
我已经使用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存在,是否暗示我在做什么错?
您是否知道是否可以将lsyncd与rsync一起使用,以使其与远程源保持本地文件夹“最新”的方式? 还是可以将rsyncssh与远程源一起使用?
谢谢!
lsyncd无法做到这一点,因为它不是以这种方式设计的。 它旨在使用inotify事件来监视目录,然后启动rsync进行繁重的工作。 inotify本质上是一个本地概念,lsync实际上并不进行任何网络通信。
您需要做的是在服务器上运行lsyncd服务,该服务将启动配置为连接到客户端计算机的rsync。
这意味着您需要在本地计算机上设置ssh服务器。 如果您的计算机没有合适的域名/ IP地址,或者位于NAT或防火墙之后,则需要设置ssh -R
反向隧道并通过该路径路由服务器到客户端的rsync。
设置完成后就可以使用,但是说实话,您可能会发现使用SyncThing会更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.