Como girar arquivos de log antigos em um file.tar.gz exclusivo?

2

Como posso rotacionar todos os arquivos de log com mais de 30 dias em um file.tar.gz exclusivo e remover os arquivos inseridos no arquivo?

Antes:

a.log // older than 30days
b.log // older than 30days
c.log // older than 20 days

Depois:

backup.tgz
c.log
    
por Luca 29.06.2017 / 17:44

2 respostas

0

Você pode fazer o seguinte:

find . -name '*log' -mtime +30 -print0 | tar -czvf backup.tgz --remove-files --null -T -

Com:

  • find opções:
    • -name '*log' -mtime +30 : seleciona arquivos de log com mais de 30 dias
    • -print0 : imprime o nome completo do arquivo na saída padrão, seguido por um caractere nulo
  • tar opções:
    • --remove-files : remova os arquivos depois de adicioná-los ao arquivo
    • --null : lê nomes com terminação nula (enviados por find -print0 )
    • -T - : lê nomes de arquivos de stdin (saída de find )
por 30.06.2017 / 11:42
1

Se você estiver usando o criador de logs do Linux e puder adicionar uma configuração de rotação ao /etc/logrotate.d diretório no qual você pode especificar o tamanho e formato, etc ...

Exemplo:

/var/log/test.log {
    rotate 30
    weekly
    size=30k
    compress 
}

Aqui está uma folha de dicas para os scripts.

    
por 29.06.2017 / 18:03