gpt4 book ai didi

linux - 使用 lsyncd 使用远程源更新本地文件夹?

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:07 24 4
gpt4 key购买 nike

我使用 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 更容易。

关于linux - 使用 lsyncd 使用远程源更新本地文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36457567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com