Como truncar (vazio) arquivos no Linux

Jun 15, 2021
admin

Em algumas situações, você pode querer truncar (vazio) um arquivo existente para um comprimento zero. Em palavras simples, truncando um arquivo significa remover o conteúdo do arquivo sem apagar o arquivo.

Truncando um arquivo é muito mais rápido e fácil do que apagar o arquivo, recriar e definir as permissões e propriedade corretas. Além disso, se o arquivo for aberto por um processo, remover o arquivo pode causar o mau funcionamento do programa que o usa.

Este tutorial explica como truncar arquivos para tamanho zero em sistemas Linux usando o redirecionamento de shell e o comando truncate>

Reorientação de Shell #

O método mais fácil e mais usado para truncar arquivos é usar o operador de redirecionamento de shell >.

O formato geral para truncatar ficheiros usando redireccionamento é:

: > filename

Deixamos quebrar o comando:

  • Os : dois pontos significam true e não produzem saída.
  • O operador de redirecionamento > redireciona o output do comando anterior para o arquivo dado.
  • filename, o arquivo que você quer truncar.

Se o arquivo existir, ele será truncado a zero. Caso contrário, o arquivo será criado.

Em vez de : também pode usar outro comando que não produz nenhuma saída.

Aqui está um exemplo de uso do comando cat para produzir o conteúdo do dispositivo /dev/null, que retorna apenas um caractere de fim de arquivo:

cat /dev/null > filename

Outro comando que pode ser usado é echo. A opção -n diz echo para não anexar uma nova linha:

echo -n > filename

Na maioria dos shells modernos como Bash ou Zsh você pode omitir o comando antes do símbolo de redirecionamento e usar:

> filename

Para poder truncar um arquivo, você precisa ter permissões de escrita no arquivo. Normalmente, você usaria sudo para isso, mas os privilégios de root elevados não se aplicam ao redirecionamento. Aqui está um exemplo:

sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied

Existem várias soluções que permitem o redirecionamento com sudo. A primeira opção pode executar uma nova shell com o sudo e executar um comando dentro dessa shell usando o comando -c flag:

sudo sh -c '> filename'

Outra opção é pipear a saída para o comando tee, elevar os privilégios tee com sudo, e escrever a saída vazia para um determinado arquivo:

: | sudo tee filename

comando truncado #

truncate é um utilitário de linha de comando que lhe permite encolher ou estender o tamanho de um ficheiro para um determinado tamanho.

A sintaxe geral para truncatar ficheiros até ao tamanho zero com o comando truncate, é a seguinte:

truncate -s 0 filename

A opção -s 0 coloca o tamanho do ficheiro a zero.

Por exemplo, para esvaziar o log de acesso Nginx que você usaria:

Empty All Log Files #

Acima do tempo, a sua unidade de disco pode ficar desorganizada com uma grande quantidade de arquivos de log de grandes dimensões, ocupando uma grande quantidade de espaço em disco.

O seguinte comando irá esvaziar arquivos terminando com “.log” sob o directório /var/log:

sudo truncate -s 0 /var/log/**/*.log 

A melhor opção seria rodar, comprimir e remover os ficheiros de logs com o ficheiro logrotatetool.

Conclusion #

Para truncar um ficheiro no Linux use o operador de redireccionamento > seguido do nome do ficheiro.

Deixe uma resposta

O seu endereço de email não será publicado.