我有两台服务器:源服务器和目标服务器。我想使用 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