Preciso fazer um rodízio diário de /var/log/messages para ser mantido por 60 dias, onde os últimos 30 logs devem ser compactados com bzip2.
Esta é minha configuração do logrotate:
/var/log/messages { daily
rotate 60
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
mas o resultado é manter os últimos 60 logs diários não compactados. Se add compress
, todos os 60 logs serão compactados.
Então, existe uma maneira de compactar SOMENTE os últimos 30 logs?
Responder1
Acho que não existe essa opção para o logrotate fazer isso diretamente. Apenas uma opção relevante é delaycompress
atrasar a compactação em um ciclo de rotação de log (um dia no seu caso). Possivelmente, você pode usar a compresscmd
opção escrevendo um script de shell para verificar quantos arquivos de log você possui até o momento e compactar/descompactar os arquivos desejados.
Outra possibilidade é agendar um cron
trabalho diário para executar um script para verificar seus arquivos de log e compactar/descompactar o que desejar.