logrotate: mantém N novos arquivos, mas não renomeia

1

Eu tenho um serviço que cria automaticamente um arquivo de log com um timestamp no nome do arquivo na inicialização. Portanto, não preciso de logrotate para renomear / copiar / criar arquivos, mas o que eu quero é que o logrotate mantenha apenas os três mais novos desses arquivos (e, opcionalmente, compactá-los). Posso fazer isso de alguma forma?

    
por Michael 20.09.2012 / 10:41

2 respostas

3

Não sei se você pode fazer isso usando logrotate . Você pode executar o seguinte como uma tarefa cron diária:

rm $(ls -t | sed -e '1,3d')
    
por 20.09.2012 / 11:02
0

Eu não acho que isso possa ser feito exatamente como você quer. Caso você ainda queira usar o logrotate, primeiro você precisa especificar com que frequência o logrotate irá rotacionar seu log (diário / semanal / mensal / anual). Você pode definir assim:

# rotate log files daily
daily

# Log files are rotated count times before being removed or mailed to the address
# specified in a mail directive. If count is 0, old versions are removed rather than 
# rotated.
rotate 3

# Old versions of log files are compressed with gzip(1) by default.
compress

Mas como @quanta escreveu, isso provavelmente não pode ser feito com o logrotate. Você usará algumas configurações semelhantes às que escrevi acima ou precisará usar provavelmente outra ferramenta.

    
por 20.09.2012 / 11:14