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