Como limpar/truncar/zerar diversos arquivos de texto de uma só vez
Dica publicada em Linux / Comandos
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
Observação: esta dica foi utilizada num servidor com a distribuição CentOS.
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.