Прерывистый rsync порт 22: истекло время ожидания соединения - PullRequest
0 голосов
/ 29 августа 2018

Я использую rsync для обновления статического веб-контента на простом сервере (Digital Ocean, если это имеет значение) после внесения локальных изменений. Из-за структуры я хочу загружать только определенные файлы из (относительно большого) каталога. Для этого у меня есть серия 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 голосов
/ 18 декабря 2018

Это звучит как периодическая ошибка сети или ситуация с регулированием хоста.

Вы должны предусмотреть возможность того, что это произойдет, поскольку вы не можете контролировать свои возможности подключения или то, как обрабатывает удаленный хост.

Лучше всего делать повторные попытки.

...