当我尝试rsync -qaPH source/ 192.168.1.21:/var/backups
我得到
rsync: [sender] write error: Broken pipe (32)
rsync error: unexplained error (code 255) at io.c(837) [sender=3.1.0]
Run Code Online (Sandbox Code Playgroud)
我的命令有什么问题?
要进行调查,请-v
向 rsync 命令添加一个或多个选项。另外,尝试使用普通的 ssh:
ssh -v 192.168.1.21 /bin/true
Run Code Online (Sandbox Code Playgroud)
找出是 rsync 还是导致问题的底层 ssh 连接。
管道损坏错误很可能意味着您已超时。例如远程rsync命令开始计算文件差异,但没有按时回复客户端。
如果这种情况经常发生,请将这些设置添加到您的本地~/.ssh/config
:
Host *
ServerAliveInterval 30
ServerAliveCountMax 6
Run Code Online (Sandbox Code Playgroud)
并在远程服务器上(如果您有访问权限),在您的/etc/ssh/sshd_config
:
ClientAliveInterval 30
ClientAliveCountMax 6
Run Code Online (Sandbox Code Playgroud)
请参阅:选项ServerAliveInterval
和ClientAliveInterval
含义是什么?
255 实际上不是“本机”rsync
返回码。rsync
从 SSH 中抓取 255 错误代码并将其返回。在我看来,目标服务器上的某些东西正在阻止 SSH 或在连接后破坏它,因此,“管道损坏”。我不同意@kenorb,因为如果是超时问题,您可能会看到rsync
退出代码 30 或 35。