【问题标题】:Use lsyncd to update a local folder with a remote source?使用 lsyncd 使用远程源更新本地文件夹?
【发布时间】:2016-07-27 05:40:00
【问题描述】:

我使用 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 与远程源一起使用吗?

谢谢!

【问题讨论】:

    标签: linux rsync lsyncd


    【解决方案1】:

    lsyncd 不能这样做,因为它不是这样设计的。它旨在使用 inotify 事件来监视目录,然后启动 rsync 来完成繁重的工作。 inotify 本质上是一个本地概念,lsync 本身实际上并不进行任何网络通信。

    您需要做的是在服务器上运行一个 lsyncd 服务,该服务将启动一个配置为连接到您的客户端计算机的 rsync。

    这意味着您需要在本地计算机上设置 ssh 服务器。如果您的机器没有合适的域名/IP 地址,或者位于 NAT 或防火墙后面,那么您需要设置一个 ssh -R 反向隧道并通过它路由您的服务器到客户端 rsync。

    一旦设置好,它就会工作,但老实说,您可能会发现使用 SyncThing 更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 2019-08-08
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多