在大型企业防火墙密布的网络上,我们传统上会将scp
一些全新的文件从一台机器复制到另一台机器,作为日志文件轮换和分析程序的一部分。
然而,最近发现它scp
似乎随机失败,并出现Connection reset by peer
错误消息,并且我们的例程被中断。
rsync
切换到 是一个好主意吗scp
,或者有没有办法让 scp 在尝试复制文件时更加坚持一点?
答案1
“对端重置连接”表示 TCP 流的远端(不是记录错误的一端)意外关闭了 TCP 流。例如,如果远端的程序崩溃或被终止,就会发生这种情况。某些网络设备(如状态防火墙或 NAT 设备)干扰 TCP 流也可能导致该错误。
在最好的情况下,导致错误的原因可能是特定于scp
程序的。Rsync
不使用scp
,因此可能不受影响。或者,问题可能是两台服务器之间的 ssh 连接所致,甚至可能是两台服务器之间的任何 TCP 流所致。您可能正在通过 ssh 运行 rsync,因此它可能会遇到与 scp 相同的问题。
其主要功能之一rsync
是,当目标文件已经存在但内容与源文件不同时,rsync 无需重新传输整个文件——它只需传输额外的数据以使目标与源文件匹配。当您运行 rsync 时,如果在完成之前失败,您可以重新启动 rsync,它会从上次中断的地方继续,而不是重新开始。如果您发现 rsync 像 scp 一样崩溃,那么这个 rsync 功能将非常有用。
Rsync 实际上不会自行尝试重新连接,但您可以继续运行 rsync,直到它报告成功。例如,此bash
shell 命令将执行此操作:
until rsync ...
do
echo Retrying rsync
done