Конфликты резервного копирования журнала с ротацией журнала
На моих серверах у меня есть ротация журналов и скрипт резервного копирования, который, кроме всего прочего, создает резервную копию всего каталога журналов.
Для ротации журналов я использую logroatate в Linux, а newsyslog - в BSD. Для резервного копирования журнала я просто cp -Rf /var/log/ /backups/
Время от времени сценарий резервного копирования дает сбой из-за состояния гонки, возникающего, когда ротация журнала переименовывает файл журнала во время выполнения резервного копирования. Итак, я получаю что-то вроде:
cp: /var/log/messages.0: Нет такого файла или каталога
Я считаю, что моя ситуация не уникальна. Есть ли лучшие практики для преодоления этого состояния гонки и повышения надежности резервного копирования?
1 ответ
Не похоже, что logrotate предоставляет что-то, что вы можете подключить (например, pid-файл), чтобы решить эту проблему, поэтому вам нужно обойти это.
Я хотел бы изучить использование flock(1), который доступен для Linux и BSD.
Вы можете сделать так, чтобы скрипт logrotate создавал блокировку, а затем резервный скрипт проверял и ожидал блокировки.