Comment tronquer (vider) les fichiers sous Linux
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
:
signifietrue
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 sudo
pour 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 logrotate
tool.
Conclusion #
Pour tronquer un fichier sous Linux, utilisez l’opérateur de redirection >
suivi du nom du fichier.