我有几台 Windows 机器正在使用 deltacopy 和 rysyc 通过 ssh 备份到 ubuntu 机器。一半的备份将运行,另一半则不会。以下是其中一个错误的示例。即使手动运行,备份也不会执行:
rsync:读取错误:对端重置连接(104)rsync 错误: rsync 协议数据流错误(代码 12) /home/lapo/packaging/rsync-3.0.4-1/src/rsync-3.0.4/io.c(791) [sender=3.0.4] 发生一般错误Rsync.exe 返回错误。 将会再试一次。
答案1
此错误告诉您本地 rsync 正尝试与远程 rsync 通信,但与该 rsync 的连接现已中断。
如果远程 rsync 是守护进程,则第一步应该是查看守护进程的日志文件,查看它是否记录了错误,以解释为什么中止传输。还要仔细检查以确保日志文件设置正确,因为 rsyncd.conf 文件中错误的“日志文件”设置也会导致此问题。
远程 rsync 进程消失有几种常见原因:
- 目标磁盘已满(请记住,您至少需要有需要更新的最大文件的大小才能在可用磁盘空间中保证传输成功)。
- 空闲连接导致路由器或远程 shell 服务器关闭连接。
- 网络错误导致连接断开。
- 未找到远程 rsync 可执行文件。
- 您的远程 shell 设置工作不正常或者不“干净”(即它向 rsync 发送了虚假文本)。
如果您无法确定失败的原因,可以采取一些步骤来调试情况。一种方法是在远程系统上创建一个 shell 脚本,例如这个名为“rsync-debug”(这是一个 Linux 脚本,您可能需要一个 Windows 等效脚本)。您可以像这样使用该脚本:
rsync -av --rsync-path=/some/path/rsync-debug HOST:SOURCE DEST
rsync -av --rsync-path=/some/path/rsync-debug SOURCE HOST:DEST
此脚本启用核心转储,并将导致失败的所有操作系统系统调用记录到 /tmp 目录中的文件中。您可以使用生成的文件来帮助找出远程 rsync 失败的原因。