Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile 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.  smile
.

= =


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.  smile


___
(*) 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 wink ),

- 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

grandtoubab a écrit :

salut
Pour vérifier le home je propose

du -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

diesel83140 a écrit :

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% smile 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

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-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  lol lol


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

moko138 a écrit :

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

Par moments, je me demande si tu prends la peine de lire ce que j'écris. sad

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

grandtoubab a écrit :
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-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  lol lol

Pour ce qui est de se servir de son PC, chez moi, le /home/moi fait 480 GO. wink big_smile big_smile big_smile

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. wink smile smile

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

En #3, diesel83140 a écrit :

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:~$
diesel83140 a écrit :

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 wink )

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