Как постоянно выполнять резервное копирование файлов журнала?
У меня есть некоторые приложения в Linux, которые создают файлы журналов по 41 МБ каждый. Приложение переключается с log.2
на log.2
и начинает перезаписывать log.2
только этот 41MB завершен в файле log.1.
Я хочу сделать резервную копию этих файлов так, чтобы всякий раз, когда новый файл log.2
достигает размера более 1 log.2
он берет резервную копию (gzip и сохраняет в другом месте) другого файла ( log.1
).
- `tee` для команд
- Запуск стеклянной рыбы на сервере LINUX удаленно
- Поиск длины сеанса терминала
- Создать массив в bash с переменными как имя массива
- Проверьте, установлена ли папка удаленной файловой системы
Я использую скрипт, который берет резервную копию файла всякий раз, когда он достигает 41 МБ, но проблема здесь иногда заключается в том, что эта 41 МБ резервная копия файла обрабатывается скриптом, в то время как данные все еще записываются в один и тот же файл с огромной скоростью. Из-за этого теряются несколько секунд данных журнала, поэтому я пытаюсь использовать альтернативный способ сделать резервную копию другого файла после того, как новый файл достигнет 1 МБ или что-то еще, так что я уверен, что другой файл закончен.
Любая идея, как мне это сделать?
- Выполнить команду на нескольких хостах, но только команду печати, если она выполнена успешно?
- Сравнение времени файла в ksh
- Скрипт для проверки состояния ntp и синхронизации времени системы
- Исходное синтаксическое объяснение переменных в bashrc
- Сценарий оболочки для записи выбранных полей в одну строку
- Кластеризация идентичных файлов, игнорирующих пробелы и разрывы строк
- Состояние выхода Bash, используемое с PIPE
- Почему значение IFS удаляется из файла при расщеплении?
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 , чтобы выполнить собственный скрипт, который вы можете использовать для переноса повернутого файла журнала в другое место.
- Какой набор команд ограничит скорость исходящих данных до X kbps для трафика в порт или из порта Y?
- GRUB больше не может загружать машину (разные сообщения об ошибках)