Compacta arquivo de log antigo em um único zip-linux

7

Eu tenho uma pasta /home/testuser/log que contém arquivos de log de um dia de idade *.log . Eu desejo compactar todos os arquivos de log mais antigos que um dia para um único zip (gzip ou tar.gz) e excluir os arquivos mais antigos.

Eu tentei localizar e tar os comandos do pipeline, mas não funcionou

    
por Ajo Mathew 18.12.2012 / 09:03

2 respostas

10

Crie arquivos tar.gz com mais de um dia de registros

find /home/testuser/log/ -mtime +1 | xargs  tar -czvPf  /opt/older_log_$(date +%F).tar.gz

Apague arquivos antigos [Nota: - se a saída abaixo for Corrigir, remova o eco e depois apague esses arquivos]

find /home/testuser/ -mtime +1 | xargs  -n1 echo rm
    
por 18.12.2012 / 10:43
1

Estendendo o comentário do sr_, estou usando o logrotate para manter um despejo SQL noturno. Eu tenho essa configuração em /etc/logrotate.d/mydbdump :

/var/backups/dump.sql {
        daily
        rotate 7
        missingok
        create 640 root root
        compress
}

Basicamente, ele pega o arquivo /var/backups/dump.sql (você deve especificar o nome do seu arquivo de log), comprime-o e renomeia para dump.sql.1.gz . Antes disso, ele gira o antigo dump.sql.1.gz para dump.sql.2.gz e assim por diante e exclui o mais antigo.

logrotate em si é normalmente chamado por cron , portanto, dê uma olhada nos seus diretórios /etc/cron* para controlar quando é executado.

    
por 18.12.2012 / 10:13