Warum melden Finder und du unterschiedliche Dateigrößen?

3403
flipdoubt

Ich schreibe ein Geektool 3- Skript, um die Größe einer bestimmten virtuellen VMware Fusion-Maschine anzuzeigen . Eine solche .vmwarevm"Datei" ist wirklich ein gepacktes Verzeichnis.

Informationen im Finder erhalten sagt, dass die Datei "52,91 GB" ist. Ich führe den folgenden duBefehl aus, um die Dateigröße zu erhalten:

> du -hs ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '' 

Dieser du -hsBefehl gibt die Dateigröße als "49G" zurück. Was ist der Unterschied zu dem, was Finder berichtet?

Alternativ habe ich versucht, die -sOption durch die -dOption zu ersetzen :

du -hd ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '' 

Dieser du -hdBefehl gibt die Dateigröße als "59G" zurück. Was ist der Unterschied zwischen Finder du -hd, und du -hs?

Dieser du -hdBefehl erzeugt auch keine Ausgabe in geektool 3. Was gibt es?

3

3 Antworten auf die Frage

6
Nifle

Kein Mac OS X-Benutzer, aber ich habe irgendwo gelesen, dass Finder heutzutage Base-10 verwendet.

Könnte der Unterschied sein, dass du immer noch base-2 benutzt?

49.0 GiB * (1024^3 bytes / GB) = 52,613,349,376 bytes = 52.6 GB 

(Der kleine Unterschied besteht darin, dass duauf das nächste GB gerundet wird.)

Die Base-2-Version wäre jedoch sicherlich * kleiner *? Phoshi vor 14 Jahren 0
@Phoshi - Finder sagt 52.91, du sagt 49 Nifle vor 14 Jahren 0
Oh, richtig bist du. Ich habe das zweite "59G" falsch gelesen. Phoshi vor 14 Jahren 0
Weiß jemand, wie man ein Skript schreibt, das die Ausgabe in die Basis 10 konvertiert? flipdoubt vor 14 Jahren 0
4
Cry Havok

Beachten Sie auch, dass "du" den tatsächlich verwendeten Speicherplatz zurückgibt, wohingegen andere Tools den zugewiesenen Speicherplatz zurückgeben. Bei Dateien mit geringer Dichte können diese beiden Werte sehr unterschiedlich sein - ich habe eine Datei, die 2 TB zugewiesen hat, belegt jedoch nur etwa 200 MB Speicherplatz.

Welches Befehlszeilentool zeigt zugewiesenen Speicherplatz in OS X an? flipdoubt vor 14 Jahren 0
"ls" wird (wie von Stephen gedeckt). Cry Havok vor 14 Jahren 0
3
Stephen Jennings

Nifle ist richtig. duGibt Basis-2 zurück, Finder gibt Basis-10 zurück und 49 GBB 52,91 GB

Für das Argument -d müssen Sie eine Tiefe angeben. Wenn Sie jetzt experimentieren, scheint es, wenn Sie etwas außer einer Zahl für die Tiefe angeben, es frisst das angegebene Argument und verhält sich so, als würden Sie es tun -d 0. Das 59G, das Sie erhalten, ist die Größe des aktuellen Verzeichnisses, nicht die Größe der vmwarevm-Datei.

Hier ist das Experiment, das ich durchgeführt habe:

[~]$ ls -d Code Code/  [~]$ du -h -s Code 8.3M Code  [~]$ du -h -d 0 Code 8.3M Code  [~]$ du -h -d Code 38G . <-- this is the size of ~/  [~]$ du -h -d 0 38G . 

Vielleicht möchten Sie das lesen Mac OS X du (1) manpage für weitere Informationen.