问题描述
- 我正在尝试从
ServerA
到ServerB
进行 rootfs 备份。 - 连接是一种方式,使用
ServerB
从rsnapshot
初始化。 - 我已经在
backup
上创建了一个ServerA
帐户,并且仅为rsync
启用了无密码 sudo
我想要实现的目标:
- 更改
authorized_keys
上的ServerA
文件,因此只能通过 ssh 使用rsync
命令。
在 ServerB
- /etc/rsnapshot.conf
设置为使用以下参数运行 rsync
:
rsync_long_args --rsync-path="sudo rsync" --delete --numeric-ids --relative --delete-excluded
我在 ServerA
上尝试了以下操作:
from="ServerB",command="sudo rsync *" ssh-ed25519 SSH-KEY
但是 rsnapshot
不断崩溃并给出 rsync
的 IO 错误代码。
我在这里遗漏了什么?
解决方法
!!问题解决了!!
发现rrsync --- /usr/share/doc/rsync/scripts/rrsync
,复制到任何地方。
ServerA:authorized_keys --- command="sudo /usr/local/bin/rrsync -ro /backup"
由于我在 ServerA
上保留备份的副本,我不妨从它们进行 rsync,而不是在 ServerB
上使用 rsnapshot。 (这是我最初的想法,但它不起作用,因为 rsnapshot 创建的链接导致重复文件,我最终让 rsnapshot 在 ServerA
和 ServerB
上运行,以保存来自 { {1}} 到 ServerA
上的 localDir,还制作从 ServerA
到 ServerA
的远程快照。)
- 还更改了
ServerB
上的 sudoers 文件:
ServerA
Defaults!/usr/local/bin/rrsync env_keep += "SSH_ORIGINAL_COMMAND" backup ALL = (root) NOPASSWD: /usr/local/bin/rrsync
现在按预期工作。
请注意,上面命令中 rsync -ax --delete --numeric-ids --relative ServerA:/ /ServerB-backup/
上的路径是相对于authorized_keys 中设置的规则。