logrotate compactar apenas os últimos n logs

3

Eu preciso fazer uma rotação diária de / var / log / messages para ser mantida por 60 dias, onde os últimos 30 logs devem ser compactados com bzip2.

Esta é minha configuração de 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 registros diários não compactados. Se adicionar compress , todos os 60 registros serão compactados.

Existe uma maneira de compactar SOMENTE os últimos 30 registros?

    
por Peter 18.11.2011 / 19:25

1 resposta

5

Eu acho que não existe essa opção para o logrotate fazer isso diretamente. Apenas uma opção relevante é delaycompress , o que atrasa a compactação em um ciclo de rotação de log (um dia no seu caso). Possivelmente, você pode fazer uso da opção compresscmd escrevendo um script de shell para verificar quantos arquivos de log você tem até agora e comprimir / descompactar os arquivos que você deseja.

Outra possibilidade é agendar uma tarefa cron diária para executar um script para verificar seus arquivos de log e compactar / descompactar o que você deseja.

    
por 18.11.2011 / 19:42

Tags