Два вопроса о rsync - сбой в середине xfer и ведение журнала

Два вопроса о rsync - сбой в середине xfer и ведение журнала

Я работаю над реализацией решения для резервного копирования журналов, которое будет полагаться на использование rsync для перемещения данных с локального сервера на удаленный сервер журналов. У нас есть две проблемы: первая заключается в том, что на данный момент я не реализовал никакого журналирования, которое необходимо. Страница руководства для rsync огромна, и мы не используем сервер rsync, а только oncall rsync для передачи данных с клиента (инициируемого клиентом) на сервер хранения.

Кто-нибудь может вспомнить, есть ли какие-либо опции регистрации сбоев во время передачи или что-то в этом роде?

Кроме того, из-за особенностей реализации скрипт оболочки сначала пытается пинговать локальный сервер резервного копирования. Если пинг успешен, он загружает файлы. Однако если пинг не удался, он вместо этого загружает файлы на геоизбыточный сервер резервного копирования. Это оставляет дыру, если основной сервер выйдет из строя в середине rsync. Есть ли способ указать место назначения резервного копирования в случае сбоя во время передачи?

решение1

Я не думаю, что rsync имеет какие-либо встроенные параметры отказоустойчивости или специальную регистрацию ошибок (кроме тех, что выводятся в stderr). У него есть параметры --log-file=и --log-file-format=, но они сосредоточены на регистрации обновленных файлов, а не сбоев соединения. Я бы рекомендовал на стороне клиента проверить статус выхода rsync, и если это номер ошибки, указывающий на проблему соединения (похоже, что 10, 12 и 30 являются соответствующими, но тестирование даст вам лучшее представление), выполнить сканирование на другой доступный сервер и повторить попытку. Вы также можете захватить вывод rsync stderr и либо напрямую его зарегистрировать, либо просканировать на предмет распознанных ошибок и суммировать их в своем журнале.

Если вы хотите вести журнал на стороне сервера, я бы написал скрипт-обертку, который запускает rsync в обычном режиме ( rsync "$@"для передачи аргументов), затем проверяет его статус выхода и записывает его в журнал. Убедитесь, что ваш скрипт сам ничего не выводит (в stdout или stderr), иначе он может сбить с толку удаленного клиента rsync.

Связанный контент