使用Lsyncd

时间:2016-10-18 13:24:46

标签: linux file-transfer lsyncd

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

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

我在两台服务器上创建了一个用户'syncer',它具有一个密钥对,允许从源服务器到目标服务器的无密码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
    }
}

它的工作原理除了目标服务器上复制文件的所有者始终是'syncer'。在目标上正确地遵守和复制源的权限。我只是想办法保留复制文件的所有者(和组)。 (即,如果源文件由'deknuth'拥有,我希望目标上的同步文件也由'deknuth'而不是'syncer'拥有。)

TIA

1 个答案:

答案 0 :(得分:0)

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