Rsync зависает при передаче больших файлов по плохому соединению
У меня проблемы с передачей файлов по очень плохому соединению (я пытаюсь загрузить файл на облачный сервер) через rsync.
Rsync по существу зависает примерно через минуту или около того. Это способ, которым я пытаюсь выполнить загрузку:
rsync -avz --progress -e "ssh" ~/target.war root@my-remote-server:~/
Там нет сообщения об ошибке или другой информации. Он просто висит, отображая что-то вроде:
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