4

我有两台服务器:源服务器和目标服务器。我想使用 lsyncd 将源服务器目录中的文件同步到目标服务器上的另一个目录。

在我的 ssh 守护进程中,在两台服务器上,我都禁用了 root 登录 ( PermitRootLogin no),因此我不能使用 root 用户通过 ssh 运行 lsyncd。

我在两台服务器上创建了一个用户“同步器”,它有一个密钥对,允许从源服务器到目标服务器的无密码 ssh 登录。所以这有效:

[syncer@source-server]$ ssh syncer@target-server

我的 lsyncd.conf 看起来像这样:

settings = {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd.stat",
    statusInterval = 2
}


sync {
    default.rsync,
    source="/var/www/html/",
    target="target.server.ip:/backup/",
    rsync = {
        rsh ="/usr/bin/ssh -l syncer -i /home/syncer/.ssh/id_rsa",
        compress = true,
        acls = true,
        xattrs = true,
        archive = true
    }
}

它的工作原理目标服务器上复制文件的所有者始终是“同步器”。源的权限得到尊重并在目标上正确复制。我只是想不出一种方法来保留复制文件的所有者(和组)。(即,如果源上的文件归“deknuth”所有,我希望目标上的同步文件也归“deknuth”所有,而不是“syncer”)。

TIA

4

1 回答 1

1

要关闭它,使用非 root 用户将始终移动一个文件,该非 root 用户是目标上的所有者——无论谁在源上拥有它。这可能是可以接受的。如果没有,请以 root 身份运行 lsyncd 并允许使用密钥对的 root 登录。

于 2016-11-02T01:57:29.387 回答