在进行本地更改后,我正在使用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问题,但是所有解决方案都用于纠正呼叫(例如,地址中的错误),防火墙(例如,阻止端口)或服务器(例如, ,则无法运行正确的守护程序)。但是,似乎没有一个能解决这个间歇性问题。
在连接的两端是否都缺少我要解决的设置?
答案 0 :(得分:0)
这听起来像是主机间歇性网络错误或节流情况。
由于您无法控制连接或远程主机的处理方式,因此必须对可能发生的情况进行设计。
您最好的选择是重试。