Я должен передавать большие объемы данных (> 80 ГБ) через SSH с помощью rsync. Все работает нормально, но DSL-соединение, с которого отправляются данные резервной копии, будет прерываться раз в 24 часа на срок до 3 минут (смена провайдеров невозможна).
Как я:
Автоматически перезапустить передачу при восстановлении соединения?
Убедитесь, что не случайно две команды rsync работают одновременно?
linux
command-line
ssh
rsync
Сатьяджит Бхат
источник
источник
while ./run_script; do echo "Retrying..."; done; echo "Done."
Убедитесь, чтоrun_script
возвращается0
на успех.Ответы:
Следующее должно быть полезно:
Когда соединение разорвется, rsync завершит работу с ненулевым кодом выхода. Этот скрипт просто продолжает повторный запуск rsync, позволяя ему продолжаться до тех пор, пока синхронизация не завершится нормально.
источник
Это делает то же самое, что и ответ Питера, но дает пользователю возможность выбрать, какой удаленный файл он хочет и где он хочет сохранить (а также выполнить rsync через ssh). Замените USER и HOST на свое имя пользователя и хост соответственно.
Используемые здесь параметры rsync включают статистику хода выполнения во время передачи, сохранение частичных файлов при неожиданном сбое и возможность добавлять частично заполненные файлы при возобновлении. Опция -v увеличивает многословность, опция -z включает сжатие (хорошо для медленного соединения, но требует больше ресурсов процессора на обоих концах), а опция -e позволяет нам выполнять эту передачу по ssh (шифрование всегда хорошо).
Примечание. Используйте это только в том случае, если у вас есть доступ с открытым ключом для вашего ssh, в противном случае он будет запрашивать пароль при перезапуске (уничтожая все функции скрипта).
источник
Демон supervisor (диспетчер управления процессами) может очень хорошо работать после создания сертификатов rsa обеих сторон, с подобной конфигурацией, как указано ниже: (/ etc / supervisor / supervisord.conf - это путь к файлу конфигурации в системах на основе debian)
источник
Ответ @ Питера кажется очень полезным, но для меня было важно использовать
--update
опцию. После возобновления соединения без--update
rsync пытался синхронизировать все с самого начала. При этом--update
файлы, которые уже существуют, пропускаются.rsync --partial --update --progress -r [SOURCE] [DESTINATION]
источник
--update
пропускает файлы, которые уже существуют ... Включая те, которые не были полностью скопированы к цели. Я думаю, что это идет вразрез с большинством вариантов использования.rsync --partial --update file1 remotehost:file1
. после перевода 15% я нарушил перевод (kill -KILL).