find directory size in linux

find directory size in linux

Votre serveur sature. Le disque est plein à 99 %. C'est la panique classique du vendredi soir. Vous savez que quelque chose bouffe tout l'espace, mais où ? Taper aveuglément des commandes ne servira à rien si vous ne comprenez pas comment le système de fichiers interagit avec le matériel. Apprendre à Find Directory Size in Linux est la première étape pour reprendre le contrôle de votre infrastructure, que vous soyez sur une Debian stable ou une Arch configurée aux petits oignons. On va voir ensemble comment isoler ces gigaoctets qui disparaissent mystérieusement dans vos logs ou vos caches Docker.

La méthode standard avec la commande du

La commande du (Disk Usage) est votre meilleur ami. Elle est présente sur pratiquement toutes les distributions Linux par défaut. Je l'utilise quotidiennement parce qu'elle est prévisible. Mais attention, si vous la lancez sans options à la racine, vous allez voir défiler des milliers de lignes inutiles. En attendant, vous pouvez trouver d'similaires actualités ici : recherche de numero de tel.

L'option la plus utile est sans doute -h. Elle transforme les blocs illisibles en format humain, donc en Ko, Mo ou Go. Sans cela, vous allez devoir diviser mentalement par 1024, et personne n'a envie de faire des maths de tête quand un serveur de production est en train de flancher. Pour obtenir un résultat propre, je combine souvent cela avec --max-depth=1. Cela permet de voir la taille de chaque dossier dans le répertoire courant sans plonger dans chaque sous-dossier de manière récursive.

Pourquoi les chiffres diffèrent parfois

Vous avez peut-être remarqué une différence entre ce que dit du et ce que dit ls. C'est normal. La commande ls affiche souvent la taille apparente du fichier, tandis que du montre l'espace réellement occupé sur le disque. Sur un système de fichiers comme ext4 ou Btrfs, un fichier peut être "clairsemé" (sparse file). Il annonce 10 Go mais n'en occupe que 2 sur le disque physique. Si vous voulez vraiment Find Directory Size in Linux de manière précise, fiez-vous à l'occupation réelle des blocs. Pour en savoir plus sur l'historique de ce sujet, Numerama offre un excellent résumé.

Gérer les erreurs de permission

Si vous lancez une analyse sur /var ou /root sans les privilèges nécessaires, vous allez être inondé de messages "Permission denied". C'est frustrant. Pour éviter de polluer votre sortie standard, je vous conseille d'ajouter 2>/dev/null à la fin de votre commande. Cela redirige les erreurs vers le néant informatique. Vous obtenez ainsi une liste propre des dossiers auxquels vous avez accès. C'est propre, c'est net.

Utiliser Find Directory Size in Linux pour le nettoyage

Il ne s'agit pas juste de regarder les chiffres. Il faut agir. Parfois, le coupable n'est pas un gros dossier, mais des milliers de petits fichiers qui saturent les inodes de votre système. Les serveurs de messagerie ou les systèmes de cache sont les champions pour ça. Dans ce cas, une approche différente est nécessaire.

Trier les résultats par poids

Voir la liste, c'est bien. Voir les plus gros dossiers en haut, c'est mieux. On peut passer le résultat de du à la commande sort. C'est une technique que j'ai apprise à mes dépens après avoir passé vingt minutes à scroller dans un terminal Putty. En utilisant du -h | sort -h, vous obtenez un classement immédiat. Le drapeau -h sur sort est crucial car il comprend que 1 Go est plus grand que 500 Mo. Sans lui, le tri se base sur l'ordre alphabétique des chiffres, ce qui rend le résultat totalement absurde.

Exclure des répertoires spécifiques

Imaginez que vous analysiez votre dossier utilisateur mais que vous vouliez ignorer les dossiers montés via un réseau ou des systèmes de fichiers externes comme NFS. L'option --exclude sauve des vies ici. On peut aussi utiliser -x ou --one-file-system. Cela force la commande à rester sur la partition actuelle. C'est une sécurité indispensable pour ne pas se retrouver à scanner accidentellement un NAS de 40 To alors qu'on cherche juste pourquoi le dossier /home déborde.

Les alternatives modernes et visuelles

Le terminal classique a ses limites. Parfois, on a besoin d'une vue d'ensemble plus intuitive pour repérer les anomalies structurelles. Des outils comme ncdu ont changé ma façon de bosser. C'est une interface en mode texte, mais interactive. Vous naviguez dans les dossiers avec les flèches du clavier et vous pouvez supprimer des fichiers directement depuis l'interface. C'est extrêmement rapide et efficace sur une connexion SSH.

Une autre option consiste à utiliser des utilitaires graphiques si vous êtes sur un environnement de bureau comme GNOME ou KDE. L'analyseur d'utilisation des disques (Baobab) propose une représentation en anneaux. C'est très visuel. On voit tout de suite quel projet de montage vidéo oublie de vider ses fichiers temporaires. Pour ceux qui gèrent des parcs de machines, l'installation de ces outils n'est pas toujours possible, d'où l'importance de maîtriser les commandes de base.

L'impact des systèmes de fichiers sur la mesure

Le stockage sous Linux n'est pas monolithique. Selon que vous utilisez XFS, ZFS ou même du RAID logiciel via mdadm, la perception de la taille peut varier. Les mécanismes de compression à la volée, présents sur ZFS par exemple, font que vos données occupent moins de place physique que leur taille logique. C'est génial pour économiser de l'argent sur le stockage, mais ça rend le diagnostic plus complexe.

Le rôle des liens symboliques et physiques

C'est un piège classique. Un lien physique (hard link) pointe vers les mêmes données sur le disque. Si vous comptez deux fois le même fichier parce qu'il existe dans deux dossiers différents via des liens physiques, vous allez croire que votre disque est plus plein qu'il ne l'est en réalité. La plupart des outils Linux modernes sont assez malins pour ne compter l'espace qu'une seule fois, mais il faut rester vigilant. Les liens symboliques, eux, ne pèsent presque rien. Ils ne sont que des chemins pointant vers une autre cible.

Nettoyer les journaux système

Souvent, la croissance incontrôlée vient de journald. Sous les distributions modernes comme Ubuntu ou Fedora, les logs peuvent s'accumuler jusqu'à occuper plusieurs gigaoctets. Vous pouvez vérifier la taille totale des logs avec journalctl --disk-usage. Si c'est trop gros, une commande pour limiter cette taille est bien plus utile que de simplement constater le problème. C'est typiquement le genre de détail qui sépare un utilisateur occasionnel d'un administrateur chevronné.

Automatiser la surveillance du stockage

On ne peut pas passer sa vie à taper des commandes manuellement. L'étape suivante, c'est l'automatisation. Un petit script Bash lancé via une tâche Cron peut vous envoyer une alerte dès qu'un dossier dépasse un certain seuil. C'est la base de la maintenance préventive. J'ai vu des entreprises perdre des milliers d'euros parce qu'une base de données s'est arrêtée net à cause d'un disque plein. Un simple script de vérification aurait évité le désastre.

Utiliser des outils de monitoring professionnels

Pour les infrastructures plus larges, on se tourne vers des solutions comme Prometheus ou Zabbix. Ces outils collectent les métriques d'utilisation disque en temps réel. Ils génèrent des graphiques de tendance. Voir une courbe monter doucement permet d'anticiper l'achat de nouveaux disques ou le nettoyage des données avant que le système ne s'étouffe. C'est beaucoup plus serein que de réagir dans l'urgence.

Le cas particulier de Docker

Docker est un gros consommateur d'espace. Les images, les volumes et surtout les journaux des conteneurs peuvent remplir un disque en quelques jours si on ne fait pas attention. La commande docker system df est l'équivalent de du pour l'univers des conteneurs. Elle donne une vision claire de ce qui est utilisé et de ce qui peut être récupéré. C'est souvent là que se cachent les gigaoctets perdus après avoir testé plusieurs versions d'une application.

Maîtriser Find Directory Size in Linux au quotidien

Travailler sur Linux demande de la rigueur. On ne peut pas se contenter d'approximations. Chaque commande possède des nuances qui peuvent changer radicalement le résultat. La différence entre une commande qui prend dix secondes et une qui prend dix minutes réside souvent dans une seule option bien choisie.

La puissance de la commande find

Bien que du soit la référence, find est incroyablement polyvalent. On peut l'utiliser pour chercher tous les répertoires de plus de 500 Mo. La syntaxe est un peu plus lourde, mais la précision est inégalée. Vous pouvez filtrer par date de modification, par utilisateur ou par type de fichier. C'est l'outil chirurgical par excellence. Par exemple, trouver tous les fichiers .log de plus de 100 Mo et les supprimer en une seule ligne de commande est un super-pouvoir.

Gérer les fichiers cachés

On les oublie souvent. Les dossiers commençant par un point, comme .cache ou .local, cachent parfois des trésors de données inutiles. Un simple du -sh * ne les affichera pas dans beaucoup de shells. Il faut utiliser des astuces comme du -sh .[^.]* * pour être certain de tout inclure dans le calcul. C'est dans ces recoins que les navigateurs web ou les environnements de développement stockent leurs données temporaires qui finissent par peser très lourd.

À ne pas manquer : ce billet

Mesures préventives et bonnes pratiques

Une fois le problème résolu, il faut s'assurer qu'il ne revienne pas. Le partitionnement est une technique ancienne mais toujours valable. En séparant /var, /home et / sur des partitions différentes, vous empêchez un utilisateur qui remplit son dossier personnel de bloquer le fonctionnement du système entier. Si la partition /home est pleine, le système peut toujours écrire ses logs vitaux sur /var.

Configurer la rotation des logs

Le fichier /etc/logrotate.conf est votre rempart contre l'invasion des fichiers textes. Il permet de compresser les vieux logs et de supprimer ceux qui datent de plus de quelques semaines. C'est un réglage souvent négligé lors de l'installation d'une nouvelle machine, mais il est vital pour la survie à long terme de votre stockage. Une configuration propre de Logrotate garantit que la taille de vos dossiers de logs reste constante.

Quotas de disque pour les utilisateurs

Sur un serveur partagé, il est parfois nécessaire d'imposer des limites. Les quotas permettent de définir un plafond pour chaque utilisateur. S'ils tentent de dépasser cette limite, ils reçoivent une erreur "Disk quota exceeded". C'est un peu radical, mais c'est le seul moyen efficace de garantir une équité de stockage dans un environnement collaboratif ou éducatif. Vous pouvez consulter les guides officiels sur Debian.org pour voir comment implémenter cela proprement.

Étapes pratiques pour diagnostiquer votre espace disque

Si vous êtes devant un terminal en ce moment même, voici la marche à suivre que je recommande pour identifier les coupables rapidement.

  1. Vérifiez l'état global : Tapez df -h pour voir quelle partition est saturée. C'est le point de départ indispensable.
  2. Identifiez le dossier racine volumineux : Placez-vous à la racine et lancez sudo du -h --max-depth=1 | sort -h. Cela vous donnera immédiatement les secteurs qui posent problème (souvent /var, /home ou /usr).
  3. Plongez dans le dossier suspect : Répétez l'opération à l'intérieur du dossier identifié. Si c'est /var, allez voir dans /var/log ou /var/lib/docker.
  4. Cherchez les fichiers géants : Utilisez find /chemin/suspect -type f -size +100M pour lister les fichiers individuels qui dépassent 100 Mo.
  5. Analysez les inodes : Si le disque semble avoir de la place mais que vous ne pouvez plus créer de fichiers, tapez df -i. Si le pourcentage est à 100 %, vous avez trop de petits fichiers.
  6. Nettoyez intelligemment : Avant de supprimer quoi que ce soit, vérifiez à quoi sert le fichier avec la commande file. Ne supprimez jamais un fichier dont vous ne connaissez pas l'utilité, surtout dans les répertoires système.
  7. Videz les caches : Pour les systèmes sous Ubuntu ou Debian, un sudo apt-get clean peut libérer plusieurs centaines de mégaoctets de paquets téléchargés inutilement.
  8. Vérifiez les processus qui retiennent des fichiers supprimés : Parfois, vous supprimez un gros fichier de log mais l'espace n'est pas libéré. C'est parce qu'un service (comme Apache ou Nginx) le tient encore ouvert. Utilisez lsof | grep deleted pour trouver ces fantômes et redémarrez les services concernés.

Gérer l'espace disque n'est pas une science exacte, c'est plutôt un art de l'investigation. Avec les bons outils et une approche méthodique, ce qui semblait être une tâche insurmontable devient une simple routine de maintenance. Vous avez maintenant toutes les cartes en main pour ne plus jamais vous laisser surprendre par un disque saturé au mauvais moment. Gardez ces commandes dans un coin de votre tête, elles vous serviront plus souvent que vous ne le pensez. Pour approfondir vos connaissances sur l'administration système, vous pouvez consulter les ressources de la Free Software Foundation qui défend les standards ouverts indispensables à la gestion de nos systèmes. En comprenant comment vos données sont stockées, vous devenez un meilleur administrateur et un utilisateur Linux plus efficace. Pas besoin de paniquer, juste besoin de taper les bonnes lettres dans la console.

NF

Nathalie Faure

Nathalie Faure a collaboré avec plusieurs rédactions numériques et défend un journalisme de fond.