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