- 我正在尝试从
ServerA
到ServerB
进行rootfs备份 - 该连接是单向的,并且使用
rsnapshot
从ServerB
初始化 - 我在
ServerA
上创建了一个backup
帐户,并仅为rsync
启用了paswordless sudo
我正在努力实现的目标:
- 更改
ServerA
上的authorized_keys
文件,以便通过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创建了链接,所以存在重复的文件。我最终让rsnaphot在ServerA
和ServerB
上运行,以将备份从ServerA
保存到ServerA
上的localDir,并从ServerA
到ServerB
进行远程快照。(
- 还更改了
ServerA
上的sudoers文件:
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/
现在按预期工作。
请注意,上面命令中ServerA
上的路径是相对于authorized_keys中设置的规则。