Unterschied zwischen du -sh * / und du -hd 1

503
JLix

Ich habe versucht herauszufinden, wie groß jedes Verzeichnis in meinem Stammverzeichnis ist. Ich ging zu / und tat:

ls | xargs du -sh 

das Ergebnis:

... 1.9M tmp 975M usr 70G var ... 

Dann ging ich zu / var / www und machte:

du -sh 

das Ergebnis:

81G . 

Ich bin fasziniert: Wie kann ein Ordner in einem 70-GB-Ordner 81 GB sein?

Nachdem ich ein wenig experimentiert hatte, fand ich heraus, dass:

du -sh /*/ 

wird darin enden, dass

... 1.9M tmp 975M usr 70G var ... 

während du -hd 1 ergibt

... 1.9M tmp 975M usr 91G var ... 

Zwei verschiedene Größen für das Verzeichnis / var, aber alle anderen Verzeichnisse unterscheiden sich nicht in der Größe.

Was ist der Unterschied zwischen diesen beiden Varianten des Befehls du?

Irgendwelche Ideen?

1
Ich kann nicht sagen, dass dies der Fall ist (weil Sie keine vollständigen "du" -Ausgaben zur Verfügung gestellt haben), aber "du" verfolgt die von ihm besuchten Inodes. Wenn also Hardlinks vorhanden sind, wird nur das erste Vorkommnis gezählt. Kamil Maciorowski vor 7 Jahren 0
@ KamilMaciorowski Danke für diese Information, das wusste ich noch nicht. Alle anderen Verzeichnisse haben jedoch bei beiden Methoden genau dieselbe Größe. Nur / var unterscheidet sich. Wenn es die Inodes wären, sollte es nicht in der Summe gleich sein? JLix vor 7 Jahren 0
Soweit ich das Äquivalent zu "du -h -s $ etwas" sagen kann, ist "du -h -d 0 $ etwas". Mit "-d 1" sehe ich nicht die gleichen Artikel. Bei jeder Option wird der Inode nur einmal berücksichtigt. Mehrere Hardlinks blasen die gemeldete Größe nicht auf. xenoid vor 7 Jahren 0

0 Antworten auf die Frage