#1 Le 28/02/2019, à 09:45
- moko138
[Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
Ce sujet est né du fil ./viewtopic.php?id=2037222 dans lequel diesel83140 avait fait observer que seul le remplissage de la racine était préoccupant.
Et c'est en effet le cas le plus fréquent, que le remplissage d'une seule partition soit préoccupant.
A) Mesure dans la racine seule
L'option -x de du ou de ncdu a longtemps convenu ; elle ne convient plus, puisqu'elle exclut snaps et flatpaks.
C'est dû :
- au système de fichiers particulier des snaps, le squashfs,
- à l'option -x « ignorer les répertoires situés sur un système de fichiers différent » de du.
Néanmoins, on a besoin de connaître le poids total de ces squashfs puisqu'ils occupent de l'espace dans la racine (sauf partitionnement manuel spécifique... encore jamais rencontré).
Mais il convient (*) d'exclure proc/, media/, mnt/, et aussi, quelle qu'en soit la casse, Data/.
Ces exclusions s'obtiennent par :
--exclude={media,mnt,proc,*[dD][aA][tT][aA]*}
.
Application :
A1) La commande
sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | sort -h | tail -6
inclut snap/ et elle est presque parfaite, à ceci près que
moko@pc:~$ sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | sort -h | tail -6
103M /home
114M /opt
179M /lib
352M /var
2,4G /usr
3,2G /
moko@pc:~$
elle montrera home/ même si ce dernier est sur un autre système de fichiers que celui de la racine.
(Et si on ne voit pas de snap ici, c'est que je n'en ai aucun.)
A2) On peut donc lui préférer,
tenant compte de l'emplacement du home,
mais présentant /snap à part :
sudo du -xah -d1 --exclude=proc / 2>/dev/null | sort -h | tail -6 ; echo; sudo du -sh /snap
En ce cas, il suffira d'additionner les deux totaux.
.
= =
B) Mesure dans un répertoire
Ce répertoire est souvent /var/log/ ou /home/user. Dans ce cas, on
peut se dispenser de --exclude={media,mnt,proc,*[dD][aA][tT][aA]*}
/!\ Par contre l'option -a est importante pour inclure les fichiers. Comparer ainsi :
moko@pc:~$ sudo du -ah -d1 /var/log | sort -h | tail -7
124K /var/log/kern.log.1
188K /var/log/syslog
368K /var/log/syslog.1
528K /var/log/daemon.log
2,8M /var/log/daemon.log.1
17M /var/log/installer
22M /var/log
moko@pc:~$
avec
moko@pc:~$ sudo du -h -d1 /var/log | sort -h | tail -7
4,0K /var/log/samba
4,0K /var/log/unattended-upgrades
12K /var/log/fsck
28K /var/log/ConsoleKit
120K /var/log/apt
17M /var/log/installer
22M /var/log
moko@pc:~$
qui ne comporte pas de fichiers, pourtant plus gros (368K : /var/log/syslog.1).
= =
Merci à bruno, à kidc4sh et à diesel83140 pour leurs contributions.
___
(*) Pourquoi exclure des partitions et des répertoires ?
- pour limiter l'usure des SSD et HDD ;
- pour gagner du temps : inutile de scanner vos x téra-octets de données si votre racine de 50 Go est seule concernée.
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#2 Le 28/02/2019, à 09:50
- moko138
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
On notera qu'avec l'astérisque final
du -sh /* et ses variantes, comme du -sh /un/répertoire/*
ne donnent jamais le total du répertoire.
Exemple 1, à la racine :
moko@pc:~$ sudo du -sh --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} /* 2>/dev/null | sort -h | tail -5
103M /home
114M /opt
179M /lib
352M /var
2,4G /usr
<-- Pas de total.
moko@pc:~$
Exemple 2, sur /var/log :
moko@pc:~$ sudo du -sh /var/log/* | sort -h | tail -6
124K /var/log/kern.log.1
196K /var/log/syslog
368K /var/log/syslog.1
536K /var/log/daemon.log
2,8M /var/log/daemon.log.1
17M /var/log/installer
<-- Pas de total.
moko@pc:~$
= =
On notera aussi - merci bruno ! - l'option -t de du :
man du
-t, --threshold=TAILLE
exclure les entrées plus petites que TAILLE si celle-ci est positive, ou les
entrées plus grandes si négative
Ainsi :
-t 200M : négliger les éléments de moins de 100 Mio
-t 1G : négliger les éléments de moins de 1 Gio
Dernière modification par moko138 (Le 28/02/2019, à 10:10)
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#3 Le 28/02/2019, à 11:13
- diesel
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
Bonjour Moko138,
Tout d'abord, un grand bravo pour ce travail.
Malgré tout, j'ai quelques remarques (même si certaines sont de l'ordre du détail) :
- tu utilises l'option -a de la commande "du" qui est censée (selon le man) "afficher le volume de tous les fichiers, et pas seulement celui des répertoires". Or, sur ma machine, si je fais
jean-marie@jean-marie:~$ sudo du -sh /* 2>/dev/null | grep home
j'obtiens ça
851G /home
jean-marie@jean-marie:~$
alors que
jean-marie@jean-marie:~$ sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | grep home
me donne ça
848G /home
jean-marie@jean-marie:~$
Il semblerait que l'option "-a" en oublie au passage (3 GO quand-même)..., ou que l'option "-s" en compte un peu trop. Mais va savoir qui a raison... De plus, le temps d'exécution est plus long avec l'option "-a",
- Je rejoins tout à fait l'usage de l'option "-t". Sur ma machine
jean-marie@jean-marie:~$ sudo du -sht 1G /* 2>/dev/null
me donne
851G /home
4,8G /snap
9,2G /usr
3,4G /var
jean-marie@jean-marie:~$
ce qui est parfait,
- Nous avons, toi et moi une divergence "philosophique". Mon but est de faire très simple (afin de minimiser le risque d'erreurs), rapide et exhaustif (ne pas exclure une information importante du résultat). Je "paye" cela par des résultats dans lesquels il faut trier un peu. Pourtant, dans le résultat d'un "df", par exemple, je n'ai aucune difficulté à mettre de côté tous les /dev/loop* et trouver en quelques secondes le /dev/sd* qui m'intéresse. Toi, tu cherches la commande parfaite qui va donner instantanément l'information pertinente sans rien d'autre à côté. Cela est parfaitement louable, mais au vu du nombre de posts échangés sur ce sujet, on mesure toute la difficulté de l'exercice et je ne suis pas du tout persuadé qu'on ne mette pas le doigt à terme sur une nouvelle difficulté analogue à celle de l'option "-x" (voir par exemple la différence de taille de mon répertoire /home ; mais sur ce coup là, je ne sais pas qui a raison ),
- enfin, il ne faut pas oublier le côté didactique de notre forum. Un utilisateur qui n'aura tapé dans sa vie qu'une dizaine de commandes shell va être instantanément rebuté par un
--exclude={media,mnt,proc,*[dD][aA][tT][aA]*}
Et même s'il restera admiratif devant nos connaissances, il est certain qu'il ne fera jamais l'effort d'essayer de comprendre ce que ça fait. Par contre, avec une commande très simple, il pourra aller voir le man, comprendre ce que ça fait et la reproduire tout seul dans un contexte légèrement différent. Cependant, si cela est valable pour toutes les commandes qui se contentent de donner de l'information, il faut penser à prévenir ces utilisateurs pour les commandes qui vont modifier quelque chose.
Ma préférence, serait donc plutôt
sudo du -sht 1G /* >2>/dev/null
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 28/02/2019, à 12:48)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#4 Le 28/02/2019, à 11:50
- grandtoubab
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
salut
Pour vérifier le home je propose
du -ah --max-depth=1 --threshold=1G /home/$USER | sort -h | tail -7
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#5 Le 28/02/2019, à 12:37
- diesel
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
salut
Pour vérifier le home je proposedu -ah --max-depth=1 --threshold=1G /home/$USER | sort -h | tail -7
Si tu limites aux répertoires qui font plus de 1GO, je pense que le tail -7 ne doit pas servir à grand-chose.
Comme pour la racine, je ferais
sudo du -sht 1G /home/* 2>/dev/null
ou
du -sht 1G $HOME/*
pour aller voir dans mon répertoire personnel.
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 28/02/2019, à 12:43)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#6 Le 28/02/2019, à 15:10
- moko138
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
Ma préférence, serait donc plutôt
Concernant nos préférences,
je t'invite à relire le #2 et surtout la note finale du #1. Ensuite, bien sûr, chacun fait à son goût.
- -
Concernant la différence 848 / 851,
je penche pour une question d'arrondis, liée à l'option --human-readable.
Sinon, est-ce que par hasard ça ne coînciderait pas avec la ligne finale de
ncdu /home
Total disk usage: x MiB Apparent size: y MiB Items: z
?
En tout cas, non, la différence de taille de ton répertoire /home n'a aucun rapport avec l'option -x ou --exclude. Si tu en doutes, compare
sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | grep home
avec
sudo du -ah -d1 / 2>/dev/null | grep home
- -
Si tu y tiens, tu obtiendras une valeur moins imprécise (en kio) par
du -s /home
Mais une différence de 0,3% ne t'empêche pas de dormir, j'espère !
.
= =
.
Un utilisateur qui n'aura tapé dans sa vie qu'une dizaine de commandes shell va être instantanément rebuté
Cette opinion est hors-sujet, je n'y répondrai donc pas ici.
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#7 Le 28/02/2019, à 17:14
- grandtoubab
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
Si tu limites aux répertoires qui font plus de 1GO, je pense que le tail -7 ne doit pas servir à grand-chose.
Jean-Marie
mais si mais si
du -ah --max-depth=1 --threshold=1G /home/$USER | sort -h | tail -7
du: impossible de lire le répertoire '/home/moi/.thunderbird/1ypybeaw.default/cache2': Permission non accordée
6,8G /home/moi/xiaomi
9,1G /home/moi/Musique
11G /home/moi/Images
13G /home/moi/Documents
19G /home/moi/Téléchargements
175G /home/moi/Vidéos
242G /home/moi
Moi je m'en sert de mon PC
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#8 Le 28/02/2019, à 19:02
- diesel
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
Concernant la différence 848 / 851,
je penche pour une question d'arrondis, liée à l'option --human-readable.
Sinon, est-ce que par hasard ça ne coînciderait pas avec la ligne finale dencdu /home Total disk usage: x MiB Apparent size: y MiB Items: z
?
En tout cas, non, la différence de taille de ton répertoire /home n'a aucun rapport avec l'option -x ou --exclude. Si tu en doutes, compare
sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | grep home
avec
sudo du -ah -d1 / 2>/dev/null | grep home
Par moments, je me demande si tu prends la peine de lire ce que j'écris.
C'est toi qui évoques l'option -x que je n'ai jamais utilisée dans mon post #3.
Ce que j'ai comparé, c'est
sudo du -sh /* 2>/dev/null | grep home
et
sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | grep home
La différence se situe au niveau des options "-s" et "-a". Et tu remarqueras que les deux lignes de commande ont la même option "-h".
Cela dit, une différence de 0,3% ne m'empêche effectivement pas de dormir. Par contre, tu ne sembles pas vraiment intéressé par ma remarque sur le temps d'exécution... Et alors, l'aspect didactique au profit des non spécialistes te passe manifestement bien au dessus de la tête.
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 28/02/2019, à 19:13)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#9 Le 28/02/2019, à 19:10
- diesel
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
diesel83140 a écrit :Si tu limites aux répertoires qui font plus de 1GO, je pense que le tail -7 ne doit pas servir à grand-chose.
Jean-Mariemais si mais si
du -ah --max-depth=1 --threshold=1G /home/$USER | sort -h | tail -7 du: impossible de lire le répertoire '/home/moi/.thunderbird/1ypybeaw.default/cache2': Permission non accordée 6,8G /home/moi/xiaomi 9,1G /home/moi/Musique 11G /home/moi/Images 13G /home/moi/Documents 19G /home/moi/Téléchargements 175G /home/moi/Vidéos 242G /home/moi
Moi je m'en sert de mon PC
Pour ce qui est de se servir de son PC, chez moi, le /home/moi fait 480 GO.
Et dans ces 480G, il n'y a que 10 répertoires qui dépassent le giga. Bon, c'est vrai que ça fait plus que 7.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#10 Le 28/02/2019, à 22:00
- moko138
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
sur ma machine, si je fais
jean-marie@jean-marie:~$ sudo du -sh /* 2>/dev/null | grep home
j'obtiens ça
851G /home jean-marie@jean-marie:~$
alors que
jean-marie@jean-marie:~$ sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | grep home
me donne ça
848G /home jean-marie@jean-marie:~$
C'est toi qui évoques l'option -x que je n'ai jamais utilisée dans mon post #3.
Tu joues sur les mots : tu as d'abord utilisé --exclude=
puis tu as mentionné -x en ajoutant :
je ne suis pas du tout persuadé qu'on ne mette pas le doigt à terme sur une nouvelle difficulté analogue à celle de l'option "-x" (voir par exemple la différence de taille de mon répertoire /home ; mais sur ce coup là, je ne sais pas qui a raison )
Voilà pourquoi j'ai mentionné les deux options --exclude= et -x
Mais comme tu évites de montrer, d'une part, la dernière ligne de
ncdu /home
et de montrer d'autre part
sudo du -ah -d1 --exclude={media,mnt,proc,*[dD][aA][tT][aA]*} / 2>/dev/null | grep home
et
sudo du -ah -d1 / 2>/dev/null | grep home
tu vides de substance, tout seul, ton propos.
= =
Par ailleurs, j'ai fait une erreur que tu n'as pas vue :
si jamais tu as placé des squashfs dans ton home, ils seront bel et bien
exclus de la mesure par du -x, mais
inclus par du --exclude={media,mnt,proc,*[dD][aA][tT][aA]*}
puisque
man du
--exclude=MOTIF
exclure les fichiers qui correspondent au MOTIF
-x, --one-file-system
ignorer les répertoires situés sur un système de fichiers différent
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#11 Le 28/02/2019, à 22:14
- diesel
Re : [Tutoriel] Repérer les éléments lourds de la racine ou d'un dossier
Vu qu'il est impossible d'échanger sereinement avec toi (dans le genre je mélange le "-X" (en majuscule) équivalent au "--exclude" et le "-x" (en minuscule) histoire d'embrouiller les pistes et accessoirement me faire passer pour un con), j'arrête là.
A partir de maintenant, je m'abstiendrai de commenter tes écrits et la seule chose que j'attends de toi, c'est que tu en fasse autant avec les miens.
Jean-Marie
P.S. pour la petite histoire, ncdu donne 850G (entre les deux).
Dernière modification par diesel (Le 28/02/2019, à 22:21)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne