1

在进行本地更改后,我正在使用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 问题,但所有解决方案都用于更正调用(例如,地址错误)、防火墙(例如,阻塞端口)或服务器(例如,未运行正确的守护进程)。然而,似乎没有人能解决这个间歇性问题。

是否有任何我缺少的设置(在连接的任一端)可以解决这个问题?

4

1 回答 1

0

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

您必须围绕这些发生的可能性进行设计,因为您无法控制连接或远程主机的处理方式。

您最好的选择是实施重试。

于 2018-12-18T03:15:19.267 回答