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