Как постоянно выполнять резервное копирование файлов журнала?

У меня есть некоторые приложения в Linux, которые создают файлы журналов по 41 МБ каждый. Приложение переключается с log.2 на log.2 и начинает перезаписывать log.2 только этот 41MB завершен в файле log.1.

Я хочу сделать резервную копию этих файлов так, чтобы всякий раз, когда новый файл log.2 достигает размера более 1 log.2 он берет резервную копию (gzip и сохраняет в другом месте) другого файла ( log.1 ).

Я использую скрипт, который берет резервную копию файла всякий раз, когда он достигает 41 МБ, но проблема здесь иногда заключается в том, что эта 41 МБ резервная копия файла обрабатывается скриптом, в то время как данные все еще записываются в один и тот же файл с огромной скоростью. Из-за этого теряются несколько секунд данных журнала, поэтому я пытаюсь использовать альтернативный способ сделать резервную копию другого файла после того, как новый файл достигнет 1 МБ или что-то еще, так что я уверен, что другой файл закончен.

Любая идея, как мне это сделать?

2 Solutions collect form web for “Как постоянно выполнять резервное копирование файлов журнала?”

Это можно сделать с помощью logrotate, см. Ниже пример для журналов apache

Шаг 1 # Сначала убедитесь, что logrotate установлен в вашей системе, по умолчанию доступен почти во всех дистрибутивах Linux

Шаг 2 # Создайте /etc/logrotate_apache.conf как /etc/logrotate_apache.conf ниже.

 #------------------------------------------------------------------------------------- /var/log/httpd/*log { missingok minsize 1M create compress rotate 1 lastaction /sbin/service httpd reload > /dev/null 2>/dev/null || true Log_dir="/var/log/httpd/Apache_$(date +%F)/" # move to other location [[ ! -d "${Log_dir}" ]] && /bin/mkdir "${Log_dir}" && /bin/mv /var/log/httpd/*.gz "${Log_dir}" endscript } # system-specific logs may be also be configured here. #------------------------------------------------------------------------------------- 

Шаг 3 # Задайте задачу Cron, как показано ниже.

 00 * * * * /usr/sbin/logrotate -f /etc/logrotate_apache.conf 

Вы можете попробовать logrotate , некоторые примеры упоминаются здесь

Опция размера позволит вам вращать журнал, как только он достигнет указанного размера, скажем, 41 МБ.
Используйте опцию postrotate , чтобы выполнить собственный скрипт, который вы можете использовать для переноса повернутого файла журнала в другое место.

  • Команды MAC bash перестают работать должным образом
  • Сценарий оболочки, чтобы стать root
  • Как удалить строку из тега в сценарии оболочки?
  • Обновите / обновите Debian и пропустите любые взаимодействия
  • Как определить, куда перенаправляется ссылка
  • Какой приоритет я должен дать скрипту, запущенному при запуске?
  • Выполнение скриптов оболочки bash
  • Как динамически использовать перенаправление вывода?
  • Как сделать необязательные аргументы, которые могут быть именами файлов, содержащими пробелы
  • добавить новую строку в файл с разделителями
  • Какой самый переносимый синтаксис для операторов `if`?
  • Linux и Unix - лучшая ОС в мире.