Como limpar/truncar/zerar diversos arquivos de texto de uma só vez

Publicado por Mário Jorge Santos em 23/11/2012

[ Hits: 9.043 ]

 


Como limpar/truncar/zerar diversos arquivos de texto de uma só vez



Olá pessoal.

Quem administra servidores GNU/Linux sabe que, certas vezes, é necessário limpar arquivos de logs manualmente, para liberar espaço em disco na partição raiz.

Aparentemente, a solução mais simples é excluir os arquivos e aguardar que o(s) daemon(s) ao(s) qual(is) os arquivos pertencem recriem estes arquivos. Porém, muitas vezes estes arquivos são recriados com o dono e/ou grupo e/ou permissões diferentes daquelas que o arquivo tinha antes de ser apagado, e isso pode trazer sérios transtornos ao sistema rodando no servidor.

Esse dias foi preciso limpar uns arquivos de log de acesso do SARG para liberar espaço na partição raiz de um servidor.

Depois de tentar algumas combinações de comandos com o find e o xargs e depois de muito buscar na Web, encontrei uma solução utilizando os mesmos comandos (find e xargs) em um fórum.

Logado no servidor como usuário root, faça:

# find . -size +1M -iname \*.log | xargs -i bash -c "echo > {}"

Neste caso, os arquivos de log que se desejava limpar, foram filtrados pelo tamanho do arquivo (arquivos com tamanho acima de 1 MB), mas é possível aplicar diversos filtros.

Para ver as opções completas, basta digitar no terminal:

# man find

Referência


Observação: esta dica foi utilizada num servidor com a distribuição CentOS.

Outras dicas deste autor

Backup da pasta de usuário sem copiar os arquivos ocultos

Área de trabalho do Ubuntu - Retirando permissões de usuário

Leitura recomendada

Vídeo do LinuxTips: Permissões e ACL

Convertendo alguns arquivos

Copiando arquivos e mantendo a estrutura original de diretórios

Tar e split - Gerando backups e dividindo-os

Descubra quem é o dono do IP através de um comando shell

  

Comentários
[1] Comentário enviado por eldermarco em 23/11/2012 - 10:05h

Por que não usar o logrotate? Dá uma pesquisada nele e veja se pode ser útil pra você.

[2] Comentário enviado por mariojsantos em 23/11/2012 - 10:11h

Olá eldermarco. Obrigado pela contribuição. O logrotate limpa os logs automaticamente. Porém, essa dica é pra quando se necessita limpar arquivos de texto (e não apenas logs) de forma manual, por exemplo, limpar apenas logs muito grandes para liberar espaço, mas manter alguns outros logs que se necessite. Essa dica dá opções de filtrar determinados tipos de arquivos, com todas as opções e flexibilidade que o comando find oferece.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts