logrotate compacta apenas os últimos n logs

logrotate compacta apenas os últimos n logs

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 é delaycompressatrasar a compactação em um ciclo de rotação de log (um dia no seu caso). Possivelmente, você pode usar a compresscmdopçã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 crontrabalho diário para executar um script para verificar seus arquivos de log e compactar/descompactar o que desejar.

informação relacionada