Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connaître à peu près la taille d'un répertoire *rapidement* (quitte à sacrifier la précision du résultat)

24 réponses
Avatar
Francois Lafont
Bonjour à tous,

Je sais que la commande « du -sh /mon/rep/ » va me donner la taille de
l'ensemble du contenu de /mon/rep/. Mais quand le répertoire est gros,
la commande est longue.

En effet, dans une partition saturée (avec plein de répertoires
partout), j'aimerais bien arriver à cibler rapidement le
(sous-)répertoire anormalement gros (s'il existe) dans la gigantesque
forêt des répertoires et une commande comme « du » est hélas assez
longue à exécuter si bien que la recherche prend du temps.

Bref, ma question est : existe-t-il une commande donnant rapidement la
taille d'un répertoire même quand il est gros quitte à sacrifier un peu
(beaucoup) de précision. Et ce qui motive ma question c'est d'avoir un
outil pour arriver rapidement à cibler le (sous-)répertoire anormalement
gros dans un /home saturé (par exemple).

Question annexe : pourquoi est-ce que la commande « df -h », elle, va me
donner la taille de mon /home en une fraction de seconde, sachant
qu'après tout /home est un répertoire et qu'avec « du -sh /home » je
suis sûr que l'exécution prendra des plombes.

Merci d'avance.

--
François Lafont

10 réponses

1 2 3
Avatar
Luc.Habert.00__arjf
Francois Lafont :

Bref, ma question est : existe-t-il une commande donnant rapidement la
taille d'un répertoire même quand il est gros quitte à sacrifier un peu
(beaucoup) de précision.



Pas à ma connaissance. Et je ne vois pas comment on pourrait faire, sauf
avec un hypothétique filesystem ad-hoc.

Question annexe : pourquoi est-ce que la commande « df -h », elle, va me
donner la taille de mon /home en une fraction de seconde, sachant
qu'après tout /home est un répertoire et qu'avec « du -sh /home » je
suis sûr que l'exécution prendra des plombes.



df donne l'état de remplissage du filesystem sur lequel se trouve le
répertoire passé en argument. Ça, c'est un truc que les filesystems gardent
usuellement dans une variable, donc ils peuvent donner la réponse
immédiatement.
Avatar
Francois Lafont
Le 12/04/2012 19:25, Luc Habert a écrit :

Bref, ma question est : existe-t-il une commande donnant rapidement la
taille d'un répertoire même quand il est gros quitte à sacrifier un peu
(beaucoup) de précision.



Pas à ma connaissance. Et je ne vois pas comment on pourrait faire, sauf
avec un hypothétique filesystem ad-hoc.



Ok. Tant pis. :-)

Question annexe : pourquoi est-ce que la commande « df -h », elle, va me
donner la taille de mon /home en une fraction de seconde, sachant
qu'après tout /home est un répertoire et qu'avec « du -sh /home » je
suis sûr que l'exécution prendra des plombes.



df donne l'état de remplissage du filesystem sur lequel se trouve le
répertoire passé en argument. Ça, c'est un truc que les filesystems gardent
usuellement dans une variable, donc ils peuvent donner la réponse
immédiatement.



Ok, le filesystem maintient à jour une variable qui correspond à la
taille du répertoire « associé » (ça fait partie de son job) mais il ne
le fait que pour ce répertoire là. Dommage.

Bon, je crois que ce fil va être vite plié du coup. :-)
Merci pour de ta réponse Luc.

--
François Lafont
Avatar
Jerome Lambert
Le 12/04/12 19:15, Francois Lafont a écrit :
Bonjour à tous,

Je sais que la commande « du -sh /mon/rep/ » va me donner la taille de
l'ensemble du contenu de /mon/rep/. Mais quand le répertoire est gros,
la commande est longue.

En effet, dans une partition saturée (avec plein de répertoires
partout), j'aimerais bien arriver à cibler rapidement le
(sous-)répertoire anormalement gros (s'il existe) dans la gigantesque
forêt des répertoires et une commande comme « du » est hélas assez
longue à exécuter si bien que la recherche prend du temps.

Bref, ma question est : existe-t-il une commande donnant rapidement la
taille d'un répertoire même quand il est gros quitte à sacrifier un peu
(beaucoup) de précision. Et ce qui motive ma question c'est d'avoir un
outil pour arriver rapidement à cibler le (sous-)répertoire anormalement
gros dans un /home saturé (par exemple).



du | sort -n

Non?
Avatar
Francois Lafont
Le 12/04/2012 19:44, Jerome Lambert a écrit :

Bref, ma question est : existe-t-il une commande donnant rapidement la
taille d'un répertoire même quand il est gros quitte à sacrifier un peu
(beaucoup) de précision. Et ce qui motive ma question c'est d'avoir un
outil pour arriver rapidement à cibler le (sous-)répertoire anormalement
gros dans un /home saturé (par exemple).



du | sort -n

Non?



Si, si, ça fait le travail, pas de souci. Mais le problème c'est que ce
genre de commande est vraiment longue au niveau de l'exécution. C'était
vraiment ça mon souci, la lenteur.

--
François Lafont
Avatar
Nicolas George
Francois Lafont , dans le message
<4f87134f$0$16488$, a écrit :
Ok, le filesystem maintient à jour une variable qui correspond à la
taille du répertoire « associé » (ça fait partie de son job) mais il ne
le fait que pour ce répertoire là. Dommage.



Le filesystem peut/doit le faire pour la totalité parce que c'est plus ou
moins nécessaire pour pouvoir allouer des blocs pour les fichiers.

En revanche, par répertoire, ce n'est absolument pas nécessaire, et c'est
complexe, car il faut tout maintenir à jour en cas de déplacement de
fichiers. Et je ne parle même pas des liens durs.
Avatar
Luc.Habert.00__arjf
Francois Lafont :

Ok, le filesystem maintient à jour une variable qui correspond à la
taille du répertoire « associé »



Je n'aime pas trop ce terme. Un fichier peut très bien n'être dans aucun
répertoire (un fichier effacé, mais sur lequel un programme a gardé un fd
ouvert), et il sera compté dans la place occupée sur le disque.

Maintenir la taille de tous les répertoires est plus compliqué qu'on ne
pourrait le penser. Déjà, sur un filesystem simple où un fichier ne peut
apparaitre que dans un seul répertoire, ça veut dire à chaque fois qu'un
programme crée, supprime ou modifie la longueur d'un fichier, remonter
jusqu'à la racine pour mettre à jour les tailles (même windows semble ne pas
le faire). Mais sur un filesystem unix, c'est bien pire parce qu'un fichier
peut être lié à plusieurs endroits: il faut retrouver tous ces endroits (ce
qui force à maintenir dans les métadonnées d'un fichier la liste des
répertoires où il est lié, or j'imagine qu'on ne s'embete usuellement pas à
ça), et remonter à partir d'eux en faisant gaffe à s'arrêter lorsque l'on
rejoint un chemin de remontée à partir d'un autre lien.
Avatar
Fabien LE LEZ
On Thu, 12 Apr 2012 19:48:43 +0200, Francois Lafont
:

Mais le problème c'est que ce
genre de commande est vraiment longue au niveau de l'exécution.



Je ne comprends pas bien le problème.
Si ton disque est saturé aujourd'hui, lance "du|sort -n" ce soir, va
te coucher, et tu auras tous les résultats demain matin.
Si tu dois faire cette opération souvent, il y a quelque chose de
louche. Probablement le même répertoire qui se remplit en permanence à
cause d'un bug.
Avatar
Francois Lafont
Le 12/04/2012 20:34, Fabien LE LEZ a écrit :

Je ne comprends pas bien le problème.
Si ton disque est saturé aujourd'hui, lance "du|sort -n" ce soir, va
te coucher, et tu auras tous les résultats demain matin.



Oui, absolument. C'est le genre de commande que je lancerais même dans
une « console screen ». Mais bon, je dois être un impatient, c'est pour
ça que je posais la question. :-)

Si tu dois faire cette opération souvent, il y a quelque chose de
louche. Probablement le même répertoire qui se remplit en permanence à
cause d'un bug.



On est d'accord.
Si je posais la question, c'est parce qu'il m'est arrivé à plusieurs
reprises, sur des serveurs (d'établissements scolaires) différents, de
chercher des gros fichiers/répertoires dans des /home saturé.


--
François Lafont
Avatar
Nicolas George
Francois Lafont , dans le message
<4f87235c$0$19083$, a écrit :
Si je posais la question, c'est parce qu'il m'est arrivé à plusieurs
reprises, sur des serveurs (d'établissements scolaires) différents, de
chercher des gros fichiers/répertoires dans des /home saturé.



Si c'est en tant qu'administrateur, tu devrais avoir des crontab qui te font
le boulot régulièrement.
Avatar
denis.paris
Le 12/04/2012 20:47, Francois Lafont a écrit :
Le 12/04/2012 20:34, Fabien LE LEZ a écrit :

Je ne comprends pas bien le problème.
Si ton disque est saturé aujourd'hui, lance "du|sort -n" ce soir, va
te coucher, et tu auras tous les résultats demain matin.



Oui, absolument. C'est le genre de commande que je lancerais même dans
une « console screen ». Mais bon, je dois être un impatient, c'est pour
ça que je posais la question. :-)

Si tu dois faire cette opération souvent, il y a quelque chose de
louche. Probablement le même répertoire qui se remplit en permanence à
cause d'un bug.



On est d'accord.
Si je posais la question, c'est parce qu'il m'est arrivé à plusieurs
reprises, sur des serveurs (d'établissements scolaires) différents, de
chercher des gros fichiers/répertoires dans des /home saturé.





Si c'est pour repérer des gros fichiers "find" est plus adapté, ama.
1 2 3