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

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

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

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

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

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

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

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

Спасибо

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

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

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

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

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

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

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

Я запускаю скрипты так:

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

Это напишет на /var/log/messages по умолчанию.