Ich habe einige Dateien, für die du -h
zurückgegeben wird 512
. Nach meinem Verständnis sollen Zahlen mit Einheiten zurückgegeben werden. Was bedeutet das? Wie viel Speicherplatz wird tatsächlich verwendet?
gute Datei
(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0958
36K 2020.110/drr0/X1.0060_0958
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0958
-rw-rw-rw- 1 user11 users 36628 Jul 29 18:43 2020.110/drr0/X1.0060_0958
fehlerhafte Datei
(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0957
512 2020.110/drr0/X1.0060_0957
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0957
-rw-rw-rw- 1 user11 users 0 Jul 29 18:51 2020.110/drr0/X1.0060_0957
Antwort1
du zeigt niemals Einheiten an. Beachten Sie, dassin beiden Fällenes gibt kein 'B' (für Bytes) in der Ausgabe – der "menschenlesbare" Modus zeigt nurMultiplikatorpräfixe(K, M, G), aber nicht die Einheiten selbst. Und da es für Zahlen unter 1024 kein Präfix gibt, wird auch keines angezeigt.
Normalerweise misst 'du' Dateien in Blöcken (siehe Manualpage), aber mit der Option '-h' ist die Einheit immer 1 Byte. Wenn also du -h
angezeigt wird 512
, sind das 512 Byte.
Warum 512 und nicht 0? Siehe phuclvs Antwort
Antwort2
Dateien verbrauchen nicht immer Speicherplatz auf der Festplatte. Dateien mit weniger Datenblöcken als die tatsächliche Größe werden mit einer geringeren Anzahl von Blöcken gemeldet
- Sparse-Dateienwerden nur Blöcke ungleich Null auf der Festplatte gespeichert. Eine 50 TB große Sparse-Datei mit nur 5 MB ungleich Null-Daten verbraucht also nur ca. 5 MB auf der Festplatte.
- Inline-Dateienverbrauchen ebenfalls 0 Byte im Datenbereich, da sie direkt in den Metadaten selbst gespeichert sind. In NTFS heißt diesResidente Dateienund später viele andere Linux-Dateisysteme wie ext4 oderBtrfsunterstützen auch eine ähnliche Funktion
- Komprimierte Dateienhaben auch eine geringere Anzahl von Blöcken nach der Komprimierung
Wahrscheinlich ist Ihre Datei inline. Da sie keine zugewiesenen Blöcke hat, ls
wird die von gemeldete Zahl 0 sein. Sie können das ganz einfach mit überprüfen stat
. In ext4 können nur Dateien inline sein, die im Vergleich zur Inode-Größe (256+ Bytes) sehr klein sind. Sie verwenden also wahrscheinlich ein anderes Dateisystem wie NTFS oder Btrfs.
Sie können die --apparent-size
Option in verwenden du
, um die tatsächliche Größe anzuzeigen
--apparent-size
gibt die scheinbare Größe aus, nicht die Festplattennutzung; obwohl die scheinbare Größe normalerweise kleiner ist, kann sie aufgrund von Löchern in ('sparse') Dateien, interner Fragmentierung, indirekten Blöcken und dergleichen größer sein