Android

Como truncar arquivos (vazios) no linux

Comando shred - Sobrescrevendo e apagando arquivos no Linux

Comando shred - Sobrescrevendo e apagando arquivos no Linux

Índice:

Anonim

Em algumas situações, convém truncar (esvaziar) um arquivo existente para um comprimento zero. Em palavras simples, truncar um arquivo significa remover o conteúdo do arquivo sem excluir o arquivo.

Truncar um arquivo é muito mais rápido e fácil do que excluir, recriá-lo e definir as permissões e a propriedade corretas. Além disso, se o arquivo for aberto por um processo, a remoção do arquivo poderá causar mau funcionamento do programa que o utiliza.

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

Redirecionamento 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 truncar arquivos usando o redirecionamento é:

: > filename

Vamos dividir o comando:

  • O : dois pontos significa true e não produz saída. O operador de redirecionamento > redireciona a saída do comando anterior para o arquivo fornecido. filename , o arquivo que você deseja truncar.

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

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

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

cat /dev/null > filename

Outro comando que pode ser usado é o echo . A opção -n diz ao echo para não acrescentar 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 gravação no arquivo. Normalmente, você usaria o 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 redirecionar com o sudo . A primeira opção pode executar um novo shell com sudo e executar um comando dentro desse shell usando o sinalizador -c :

sudo sh -c '> filename'

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

: | sudo tee filename

Comando truncate

truncate é um utilitário de linha de comando que permite reduzir ou estender o tamanho de um arquivo para um determinado tamanho.

A sintaxe geral para truncar arquivos com tamanho zero com o comando truncate é a seguinte:

truncate -s 0 filename

A opção -s 0 define o tamanho do arquivo como zero.

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

sudo truncate -s 0 /var/log/nginx/access.log

Esvaziar todos os arquivos de log

Com o tempo, sua unidade de disco pode ficar cheia de muitos arquivos de log grandes, ocupando grandes quantidades de espaço em disco.

O comando a seguir esvaziará os arquivos que terminam com ".log" no diretório /var/log :

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

Uma opção melhor seria girar, compactar e remover os arquivos de log com a ferramenta logrotate .

Conclusão

Para truncar um arquivo no Linux, use o operador de redirecionamento > seguido pelo nome do arquivo.

terminal truncado