Ich kann ls -ldie logische Größe einer Datei ermitteln, aber gibt es eine Möglichkeit, die physische Größe einer Datei zu ermitteln?
Ich kann ls -ldie logische Größe einer Datei ermitteln, aber gibt es eine Möglichkeit, die physische Größe einer Datei zu ermitteln?
Antworten:
ls -lgibt Ihnen die scheinbare Größe der Datei an, dh die Anzahl der Bytes, die ein Programm lesen würde, wenn es die Datei von Anfang bis Ende lesen würde. duwürde Ihnen die Größe der Datei "auf der Festplatte" geben.
Standardmäßig wird dudie Größe der Datei in Anzahl der Festplattenblöcke angegeben. Sie können -hjedoch auch eine vom Menschen lesbare Einheit verwenden. Siehe auch das Handbuch für duIhr System.
Beachten Sie, dass mit GNU Coreutil du(was wahrscheinlich unter Linux -bder Fall ist ) das Abrufen von Bytes die --apparent-sizeOption impliziert . Dies ist nicht das, was Sie verwenden möchten, um die Anzahl der tatsächlich auf der Festplatte verwendeten Bytes abzurufen. Verwenden Sie stattdessen --block-size=1oder -B 1.
Mit GNU lskönnen Sie dies auch ls -s --block-size=1für die Datei tun . Dies gibt die gleiche Nummer wie du -B 1für die Datei.
Beispiel:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
Dies bedeutet, dass dies eine 512-MB-Datei ist, die ungefähr 24 KB auf der Festplatte benötigt. Es ist eine spärliche Datei (meistens Nullen, die nicht auf die Festplatte geschrieben, sondern als logische "Löcher" in der Datei dargestellt werden). Sparse-Dateien sind häufig, wenn Sie mit vorab zugewiesenen großen Dateien arbeiten, z. B. Disk-Images für virtuelle Maschinen oder Swap-Dateien usw. Das Erstellen einer Sparse-Datei ist schnell, während das Füllen mit Nullen langsam (und unnötig) ist.
Siehe auch das Handbuch für fallocateIhr Linux-System.
du zeigt an, wie viele Daten tatsächlich gelesen werden können, und lszeigt an, inwieweit Festplattensektoren zugeordnet sind.
duzeigt die tatsächlich von der Datei verwendete Festplattenmenge an, während die scheinbare Größe (logische Größe) angibt, lswie viele Bytes ein Programm daraus lesen kann. Wenn die Datei dünn ist, wären einige der gelesenen Bytes Nullen, aber sie würden immer noch an das Programm geliefert, das sie liest (nur nicht von der Festplatte).