Rsync зависает при передаче больших файлов по плохому соединению

У меня проблемы с передачей файлов по очень плохому соединению (я пытаюсь загрузить файл на облачный сервер) через rsync.

Rsync по существу зависает примерно через минуту или около того. Это способ, которым я пытаюсь выполнить загрузку:

rsync -avz --progress -e "ssh" ~/target.war [email protected]:~/

Там нет сообщения об ошибке или другой информации. Он просто висит, отображая что-то вроде:

7307264  14%   92.47kB/s    0:07:59

Насколько мне известно, проверка связи с удаленной конечной точкой не приводит к потере пакетов.

Моя локальная машина - Mac.

Любая помощь о том, как преодолеть эту проблему, была бы хорошей. Спасибо.

2 ответа

Попробуйте это без опции -z, вы можете добавить -C к команде ssh, если вам нужно сжатие (в противном случае часть -e ssh не нужна, так как это по умолчанию).

Поскольку мы не можем знать причину проблем с подключением, я могу предложить --partial вариант rsync, Он просто может перезапустить прерванную загрузку / выгрузку.

--partial
По умолчанию rsync удалит любой частично переданный файл, если передача прервана. В некоторых случаях более желательно сохранить частично переданные файлы. Использование параметра --partial указывает rsync сохранить частичный файл, что должно значительно ускорить последующую передачу остальной части файла.

Если вы хотите избежать возможности длительного зависания соединения, вы можете использовать --timeout опция:

--timeout=TIMEOUT
Эта опция позволяет вам установить максимальное время ожидания ввода / вывода в секундах. Если данные не переданы в течение указанного времени, rsync завершится. По умолчанию 0, что означает отсутствие тайм-аута.

Я предпочитаю смешивать эти два варианта, повторяя загрузку / выгрузку, когда я ловлю код возврата nonzero от rsync команда.

Некоторые примеры кодов возврата rsync:

 23     Partial transfer due to error
 24     Partial transfer due to vanished source files
 30     Timeout in data send/receive  
Другие вопросы по тегам