我有两台服务器:源服务器和目标服务器。我想使用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
答案 0 :(得分:0)
要关闭它,使用非root用户将始终移动一个文件,该非root用户是目标的所有者 - 无论谁在源上拥有它。这可能是可以接受的。如果没有,请以root用户身份运行lsyncd,并允许使用密钥对进行root登录。