Pular para o conteúdo

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

Dica publicada em Linux / Comandos
Mário Jorge Santos mariojsantos
Hits: 12.517 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar

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.

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

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

Autostart no GNOME

Aliases - apelidos para comandos

Atualizando Fedora 31 para 32 usando linha de comando

Encontrando binários e arquivos de configuração

Adicionando Kubuntu e Xubuntu no Ubuntu

#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

Entre na sua conta para comentar.