Назад | Перейти на главную страницу

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

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

По сути, rsync зависает примерно через минуту. Вот как я пытаюсь выполнить загрузку:

rsync -avz --progress -e "ssh" ~/target.war root@my-remote-server:~/

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

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

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

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

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

Поскольку мы не можем знать причину проблем с подключением, я могу предложить --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  

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