rsync через cron. Как включить ведение журнала?


8

Я создаю резервную копию удаленного сервера на другом компьютере с помощью rsync.

В cron.daily у меня есть файл с этим:

rsync -avz -e ssh root@example.com:/ /mybackup/

Для входа в систему используется пара открытых / закрытых ключей. Это, кажется, работает хорошо в большинстве случаев, однако (по глупости) я действительно проверял это, только глядя на даты некоторых важных файлов (дампы MySQL), которые, как я знаю, меняются каждый день. Очевидно, что после этого файла может возникнуть ошибка.

Иногда это не удается. Когда я запускаю его вручную, иногда происходит что-то вроде «сброса клиента».

Каков наилучший способ зарегистрировать это, чтобы я мог с уверенностью проверить, завершено ли это или нет? Журнал cron не указывает на какие-либо ошибки. Я не пробовал, но на странице руководства rsync старой версии CentOS на резервной машине не указана опция --log-file. Я думаю, я мог бы перенаправить стандартный вывод с помощью>, но я не хочу знать о каждом файле. Я просто хочу знать, все это работает или нет ..

Спасибо

Ответы:


13

Я думаю, что вы уже решили свой вопрос. Если вы перенаправите как stdout, так и stderr в файл, вы не получите вывод для каждого файла, переданного rsync - это будет создано, только если вы работаете в режиме verbose ( -v). Поведение по умолчанию rsync- производить вывод только в случае ошибки. Так что вы можете сделать это ...

rsync ... > /var/log/rsync.log 2>&1

... и проверьте этот файл, чтобы увидеть, был ли последний rsync успешным или нет. Я явно использую >, который будет перезаписывать файл журнала при каждом rsyncзапуске.

Вы также можете воспользоваться тем, что rsyncпри неудачной передаче происходит выход с ненулевым кодом, поэтому вы можете сделать что-то вроде этого:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' you@example.com

Спасибо. Я попробую. Я предполагал, что получу каждый файл в журнале, потому что это то, что я вижу на экране, если я попытаюсь сделать это вручную без многословия. Почта выглядит хорошо.
тетранз

Если вы запускаете rsync вручную без -vфлага и по-прежнему видите вывод для каждого файла, значит что-то не так. Страница руководства rsync гласит: «По умолчанию rsync работает без вывода сообщений. Один -v даст вам информацию о том, какие файлы передаются, и краткую сводку в конце».
Жаворонки

Ну, это определенно то, что происходит. -v, кажется, включен по умолчанию. Я просто сделал перенаправление журнала, как вы предлагаете, и журнал имеет строку для каждого файла. Я не говорю, что ты не прав. CentOS должен был скомпилировать rsync по-другому. Я добавил исключений для / proc и / sys.
tetranz

Я использую CentOS, и rsync ведет себя так, как описано. Как на самом деле выглядит ваша командная строка?
Жаворонки

1
Видите, вы работаете в многословном режиме. У вас есть -vтам.
Жаворонки

4

Уберите опцию -v и добавьте -q. Это даст только ошибки


1

Возможно, вы могли бы использовать системный журнал с помощью команды: logger .

Я запускаю сценарии таким образом:

rsync -v what user@host 2>&1 | logger -t backup

Это будет писать /var/log/messagesпо умолчанию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.