我正在通过网络设置自动 rsync,使用(或尝试使用)以下命令:
rsync -e ssh -avhxAXHr --rsync-path="sudo rsync" --exclude-from=:$EXCLUDEFILE --link-dest=$LINKDEST --files-from=:$SOURCES backupuser@${RMTHST}:/ $DESTDIR
我想让源主机负责可以复制的内容。为此,我锁定了源主机上 backupuser 的 sudo 条目,以便它有--files-from
从源主机拉取文件。 sudoers 条目如下所示:
backupuser ALL(root:root) /usr/bin/rsync --server --sender -vlHogDtpAXrRxe.iLs --files-from /securepath/from-file . /
rsync 手册页指出:
...the --files-from file can be read from the remote host instead of the
local host if you specify a "host:" in front of the file (the host must
match one end of the transfer). As a short-cut, you can specify just a
prefix of ":" to mean "use the remote end of the transfer". For example:
rsync -a --files-from=:/path/file-list src:/ /tmp/copy
由于我将--files-from
在源主机上维护该文件,因此我--exclude-from
也应该在源主机上维护该文件。但是,rsync 手册页没有描述从远程主机提取文件的方法 --exclude-from
,并且当使用与 --files-from 类似的格式时,我的测试失败了。从安全角度来看,这不是什么大问题,但在处理多个服务器时,无法将两个文件维护在同一位置可能会成为管理上的难题。
我错过了什么吗?有没有办法让 rsync 从远程服务器拉取两个文件(缺少运行单独的初始 rsync 来首先拉取 --exclude-from 文件)?
答案1
如果您已经在远程使用 sudo,并且还想控制远程访问的内容,那么您还应该考虑使用 rsync 作为守护进程。看手动 rsyncd.conf
这意味着您打开了一扇门,通过它您可以控制哪些文件可见、数据可以流向什么方向(例如只读)、服务何时可用等等。您不需要 sudo,并且可以限制允许哪些用户登录。
/etc/rsyncd.conf
特别是,您可以指定一个排除文件
exclude from = somefilename