间歇性rsync端口22:连接超时

时间:2018-08-29 18:38:00

标签: ssh rsync

在进行本地更改后,我正在使用rsync在简单服务器(如果需要的话,是Digital Ocean)上更新一些静态Web内容。由于结构原因,我只想从(相对大)目录中上传某些文件。为此,我进行了一系列rsync调用,它们遵循相同的模式,例如

target="user_name@test_site.com:www_loc/"

rsync -av *html $target

rsync -av *pdf $target

rsync -av sub_dir_a/ $target/sub_dir_a

rsync -av sub_dir_b/ $target/sub_dir_b

如果我单独运行其中任何一个,它们都可以正常工作。实际上,即使在脚本中,大多数脚本也能正常工作。但是,有时其中一个同步会挂起并返回错误:

ssh: connect to host test_site.com port 22: Connection timed out
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]

我在脚本中进行了echo调用,以显示其挂在哪一个上。如果我杀死脚本(ctrl-c)并立即运行任何rsync行,它们将失败,并显示相同的错误。同样,如果在这些错误之后我尝试ssh到服务器,则ssh连接也会挂起。如果我等待几分钟,然后可以运行最初失败的rsync行,并且可以正常运行。

作为一种解决方法,我在脚本中添加了一些sleep调用,这大大降低了此错误的发生率。但是,该脚本现在需要花费很多时间,并且仍然偶尔会失败。

我已经阅读了有关此错误消息的几个SO问题,但是所有解决方案都用于纠正呼叫(例如,地址中的错误),防火墙(例如,阻止端口)或服务器(例如, ,则无法运行正确的守护程序)。但是,似乎没有一个能解决这个间歇性问题。

在连接的两端是否都缺少我要解决的设置?

1 个答案:

答案 0 :(得分:0)

这听起来像是主机间歇性网络错误或节流情况。

由于您无法控制连接或远程主机的处理方式,因此必须对可能发生的情况进行设计。

您最好的选择是重试。