Falsche Ausgabe von du?


12

Ich denke, mein Befehl ist verwirrt.

% du -shc DIR ...
...
6123941496      total

% du -shc DIR ...
...
6.1G    total

% du -sc --si DIR ...
...
6.6G    total

Ich habe versucht, LANG=Cdas Ergebnis in einer Tabelle anzugeben und zu überprüfen. Es sieht so aus, als ob -h bereits mit Potenzen von 1000 (--si) ausgegeben wird und --si eine falsche Antwort gibt. Ich denke, die richtige Antwort sollte 5,7 G für -h und 6,1 G für --si sein. Was passiert hier?

% du --version
du (GNU coreutils) 8.20
...

% uname -a
Linux XXX 3.9-1-amd64 #1 SMP Debian 3.9.8-1 x86_64 GNU/Linux

3
Bitte geben Sie die tatsächlichen Befehle an. Was ...repräsentieren die? Sie haben anscheinend genau denselben Befehl zweimal ausgeführt und unterschiedliche Ausgaben erhalten. Ist das so? Haben Sie die Erklärung der Größenmodifikatoren in gelesen man du?
Terdon

Antworten:


18

Wiederholen Sie Ihre Tests mit dem --apparent-sizeSchalter.

$ du -shc --apparent-size DIR ...

Auszug aus der Manpage

--apparent-size
       print  apparent sizes, rather than disk usage; although the apparent size is
       usually smaller, it may be larger due to holes in (`sparse') files, internal 
       fragmentation, indirect blocks, and the like

1
Ah, anscheinend entspricht -b '--apparent-size --block-size = 1'. Das habe ich vermisst. Wenn Sie 'du -shc --apparent-size' jetzt korrekt verwenden, erhalten Sie jetzt korrekt 5,7 G. Vielen Dank!
Gerry Lufwansa

@GerryLufwansa - Ja, wenn Sie anfangen, verschiedene Dateisysteme oder gemountete CIFS-Dateisysteme zu mischen, wird dies wirklich bemerkbar. Ich benutze immer entweder -boder --apparent-size.
slm

... und der Unterschied kann bei HSM-Systemen sehr groß werden, bei denen migrierte Dateien 0 (oder so etwas wie ein paar kB) ohne melden --apparent-size.
Ansgar Esztermann

Gibt es eine Lösung für das du, was mit Mac OS X geliefert wird?
Alec Jacobson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.