Comment tronquer (vider) les fichiers sous Linux

Juin 15, 2021
admin

Dans certaines situations, vous pourriez vouloir tronquer (vider) un fichier existant à une longueur nulle. En termes simples, tronquer un fichier signifie supprimer le contenu du fichier sans supprimer le fichier.

Tronquer un fichier est beaucoup plus rapide et plus facile que de supprimer le fichier, de le recréer et de définir les autorisations et la propriété correctes. De plus, si le fichier est ouvert par un processus, sa suppression peut entraîner un dysfonctionnement du programme qui l’utilise.

Ce tutoriel explique comment tronquer les fichiers à une taille nulle dans les systèmes Linux en utilisant la redirection du shell et la commande truncate.

Redirection du shell #

La méthode la plus simple et la plus utilisée pour tronquer les fichiers est d’utiliser l’opérateur de redirection du shell >.

Le format général pour tronquer les fichiers en utilisant la redirection est :

: > filename

Décomposons la commande :

  • Le deux-points : signifie true et ne produit aucune sortie.
  • L’opérateur de redirection >redirige la sortie de la commande précédente vers le fichier donné.
  • filename, le fichier que vous voulez tronquer.

Si le fichier existe, il sera tronqué à zéro. Sinon, le fichier sera créé.

A la place de : peut également utiliser une autre commande qui ne produit aucune sortie.

Voici un exemple d’utilisation de la commande cat pour sortir le contenu du périphérique /dev/null, qui ne renvoie qu’un caractère de fin de fichier :

cat /dev/null > filename

Une autre commande qui peut être utilisée est echo. L’option -n indique à echo de ne pas ajouter une nouvelle ligne:

echo -n > filename

Sur la plupart des shells modernes tels que Bash ou Zsh, vous pouvez omettre la commande avant le symbole de redirection et utiliser:

> filename

Pour pouvoir tronquer un fichier, vous devez avoir les droits d’écriture sur le fichier. Habituellement, vous utiliseriez sudopour cela, mais les privilèges élevés de root ne s’appliquent pas à la redirection. Voici un exemple:

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

Il existe plusieurs solutions qui permettent de rediriger avec sudo. La première option peut lancer un nouveau shell avec sudo et exécuter une commande à l’intérieur de ce shell en utilisant le drapeau -c:

sudo sh -c '> filename'

Une autre option consiste à canaliser la sortie vers la commande tee, élever les privilèges de tee avec sudo, et écrire la sortie vide dans un fichier donné :

: | sudo tee filename

truncate Commande #

truncate est un utilitaire en ligne de commande qui vous permet de réduire ou d’étendre la taille d’un fichier à une taille donnée.

La syntaxe générale pour tronquer les fichiers à une taille nulle avec la commande truncate, est la suivante :

truncate -s 0 filename

L’option -s 0 fixe la taille du fichier à zéro.

Par exemple, pour vider le journal d’accès de Nginx, vous utiliseriez :

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

Vider tous les fichiers journaux #

Au fil du temps, votre disque dur peut être encombré par un grand nombre de fichiers journaux volumineux prenant une grande quantité d’espace disque.

La commande suivante videra les fichiers se terminant par « .log » sous le répertoire /var/log:

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

Une meilleure option serait de faire tourner, compresser et supprimer les fichiers journaux avec l’outil logrotatetool.

Conclusion #

Pour tronquer un fichier sous Linux, utilisez l’opérateur de redirection > suivi du nom du fichier.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.