LINUX.ORG.RU
ФорумAdmin

Как с помощью logrotate паковать и удалять старые логи без переименования?


0

0

Имеется каталог с лог-файлами, у которых имена содержат отметку времени: log_20050905 и т.д. Сервис в полночь начинает писать новый лог-файл, а старый я хочу паковать, и всё, что старше недели - удалять. Вопрос: можно ли это сделать средствами logrotate? Если верить документации, то указывании "rotate" он начнёт игры с переименованиями, а если не указывать, то удалит незамедлительно.

Удалять старые:
find /dir/with/logs -name 'log_[0-9]*.gz' -mtime +7 | xargs rm

Паковать:

find /dir/with/logs \( -name 'log_[0-9]*' -a ! -name 'log_[0-9]*.gz' \) -mtime +0 xargs gzip

или

[ -e /dir/with/logs/log_`date +%Y%m%d` ] && gzip /dir/with/logs/log_`date +%Y%m%d`

sdio ★★★★★
()
Ответ на: комментарий от sdio

Предложенный вариант с find через cron мне и так ясен, у меня он выглядит так: pushd /var/log/$NAME find . -name "log*" -and -not -name "*.gz" -mtime +1 | while read fname; do gzip -9 "$fname"; done find . -name "log*.gz" -mtime +7 -print0 | xargs -r0 /bin/rm -f popd

Вопрос был про то, можно ли нечто подобное сделать именно через logrotate.

ilya_evseev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.