Intereting Posts
Вывод Shell Script не записывается в файл должным образом Источник беспроводного драйвера Broadcom vs dkms ubuntu 16.04 команда chmod не вычитается в rc.local автоматически Отказоустойчивая физическая и виртуальная машина с репликацией. Является ли это возможным? Как войти в папку foo- * без фактического использования подстановочных или оболочечных расширений? Grep для дат старше 14 дней в файле Не удалось подключиться к Интернету из Centos VM Как предотвратить добавление / удаление цикла udev tee + cat: используйте вывод несколько раз и затем объединяйте результаты Каковы значения префикса интерфейса в ifconfig? Замените все вхождения двух пробелов после окончания предложения одним пространством Как остановить фоновые процессы, запущенные с экрана Ошибка обновления Yum на centOS 5.6 Использование rsync для синхронизации двух каталогов на сервере и localhost, но размер отличается Вопрос о многоцелевом маршрутизации Centos 6.x

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

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

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

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

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

Это можно сделать с помощью 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 , чтобы выполнить собственный скрипт, который вы можете использовать для переноса повернутого файла журнала в другое место.