BackupPC - 为什么使用 rsync --sender --server ...?

BackupPC - 为什么使用 rsync --sender --server ...?

我正在 CentOS 5.5 服务器上试验 BackupPC。我几乎用默认值设置了所有内容。

我尝试为主机的 /www 目录设置基本备份。备份失败并出现以下错误:

full backup started for directory /www
Running: /usr/bin/ssh -q -x -l root target /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/
Xfer PIDs are now 30395
Read EOF: Connection reset by peer
Tried again: got 0 bytes
Done: 0 files, 0 bytes
Got fatal error during xfer (Unable to read 4 bytes)
Backup aborted (Unable to read 4 bytes)
Not saving this as a partial backup since it has fewer files than the prior one (got 0 and 0 files versus 0)

首先,是的,我已经设置了 ssh 密钥,允许我无需密码即可 ssh 到目标服务器。

在故障排除过程中,我直接从命令行尝试了上述 ssh 命令,但它挂起了。查看 SSH 调试消息的末尾,我得到:

debug1: Sending subsystem: /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/
Request for subsystem '/usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/' failed on channel 0

接下来我开始查看 rsync 标志。我没有认出--server--sender。查看 rsync 手册页,果然,我没有看到任何关于--server或 的--sender内容。这些是做什么用的?

查看 BackupPC 配置,我有以下信息:

RsyncClientPath = /usr/bin/rsync
RsyncClientCmd = $sshPath -q -x -l root $host $rsyncPath $argList+

对于论点,我列出了以下内容:

--numeric-ids
--perms
--owner
--group
-D
--links
--hard-links
--times
--block-size=2048
--recursive

请注意,没有--server或。为什么要添加这些东西?这是问题的一部分吗?--sender--ignore-times

答案1

这些--server --sender是您在管道上运行 rsync 时使用的选项。rsync 服务器设置在远程端,因此它可以执行所有校验和和增量编码魔法,这样您就只能通过线路传输更改的位。这些可能没有记录在手册页中,因为它们是自动添加的,通常不需要知道或关心它们。

rsync 命令

选项 --server 和 --sender 由 rsync 内部使用,在正常情况下用户不应该输入这些选项。在某些情况下可能需要了解这些选项,例如设置只能运行 rsync 命令的登录时。例如,rsync 发行版的支持目录中有一个名为 rrsync(用于受限 rsync)的示例脚本,可用于受限 ssh 登录。

答案2

来自我的手册页:

选项 --server 和 --sender 由 rsync 内部使用,在正常情况下用户不应该输入这些选项。在某些情况下可能需要了解这些选项,例如设置只能运行 rsync 命令的登录时。例如,rsync 发行版的支持目录中有一个名为 rrsync(用于受限 rsync)的示例脚本,可用于受限 ssh 登录。

当您不运行持久 rsync 服务器(使用 rsyncd.conf 和rsync --daemon)时,rsync 需要在连接的远程端创建自己的服务器来检查文件并执行散列等。

答案3

编辑此文件 /usr/share/backuppc/lib/BackupPC/Xfer/Rsync.pm

更改行 -> $argList

节省

相关内容