3 Stimmen

Warum stimmt beim Ausführen von ls -l die Dateigröße eines Verzeichnisses nicht mit der Ausgabe von du überein?

Was bedeutet 4096 in der Ausgabe von ls -l ?

[root@file nutch-0.9]# du -csh resume.new/
2.3G    resume.new/
[root@file nutch-0.9]# ls -l 
total 55132
drwxr-xr-x  7 root root     4096 Jun 18 03:19 resume.new

10voto

Quentin Punkte 850700

Dass das Verzeichnis 4096 Byte Festplattenspeicherplatz belegt (ohne den Inhalt).

5voto

Alan Haggai Alavi Punkte 69510

Das habe ich mir auch schon überlegt. Also, nach der Suche stieß ich auf:

"Es ist die Größe, die notwendig ist, um die Metadaten über Dateien (einschließlich der Dateinamen, die in diesem Verzeichnis). Die Anzahl der Dateien / Unterverzeichnisse zu einem bestimmten Zeitpunkt kann nicht direkt mit der angegebenen Größe übereinstimmen, denn einmal zugewiesener Speicherplatz ist nicht freigegeben wird, wenn sich die Anzahl der Dateien ändert. Dieses Verhalten ist sinnvoll für die meisten Anwendungsfälle sinnvoll (wo Speicherplatz billig ist, und wenn ein Verzeichnis einmal eine große Anzahl von Dateien enthält, wird es wahrscheinlich werden), und hilft, die Fragmentierung Fragmentierung zu reduzieren."

Referenz: http://www.linuxquestions.org/questions/showthread.php?p=2978839#post2978839

1voto

Juliano Punkte 35709

Verzeichnisse sind genau wie Dateien mit <Name, Inode>-Tupeln, die vom Dateisystem besonders behandelt werden. Die von ls gemeldete Größe ist die Größe dieser "Datei". Prüfen Sie diese Antwort in Server Fault für einen Überblick darüber, wie Verzeichnisse unter der Haube funktionieren.

Die 4096 Bytes bedeuten also höchstwahrscheinlich, dass die Blockgröße des Dateisystems 4096 beträgt und dass das Verzeichnis derzeit einen einzigen Block verwendet, um diese Tabelle mit Namen und Inodes zu speichern.

1voto

Keith Smith Punkte 3525

4096, in Ihrem Beispiel, ist die Anzahl der Bytes, die das Verzeichnis selbst verwendet. Mit anderen Worten, dies ist der Platz, der benötigt wird, um die Liste der im Verzeichnis enthaltenen Elemente zu speichern. Sie ist no ist, wie der Titel der Frage schon sagt, die Summe des Speicherplatzes aller im Verzeichnis gespeicherten Elemente.

Sie sagen nicht, welches System Sie verwenden, aber in vielen UNIX/Linux-Dateisystemen ist die minimale Einheit der Speicherzuweisung 4K, weshalb die Größe mit 4096 angegeben wird. Die Verzeichniseinträge für zwei Objekte, plus "." und "..", sollten wesentlich weniger Platz benötigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X