GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum ist die Größe eines Verzeichnisses unter Unix immer 4096 Bytes?

Dies ist die anfängliche Größe, die zum Speichern der Metadaten zu den in diesem Verzeichnis enthaltenen Dateien (einschließlich Namen) erforderlich ist. Die anfängliche Allokation entspricht der Größe eines Sektors, kann aber bei Bedarf darüber hinaus wachsen. Einmal zugewiesener Speicherplatz wird nicht freigegeben, wenn Dateien entfernt werden, um die Fragmentierung zu reduzieren.

Zum Beispiel:

$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/

Quelle


Manchmal sind 4096 Bytes die kleinste Zuordnungseinheit für einige Dateisysteme. Deshalb hat das Verzeichnis 4096.

Das Gleiche gilt für Dateien. Auch wenn einige Dateien weniger als 4096 melden, nehmen sie tatsächlich mindestens 4096 Speicherplatz auf der Festplatte ein.


4096 ist reserviert, um die Fragmentierung zu reduzieren, da die tatsächliche Größe der enthaltenen Metadaten häufig je nach Verzeichnisinhalt schwankt. Wenn es im Laufe der Zeit ständig wächst und schrumpft (sagen wir, es enthält Protokolldateien oder dynamische Inhalte), kann dies die Leistung beeinträchtigen. Dies würde wahrscheinlich nicht mit einem Ordner passieren, aber über das gesamte Dateisystem würde es sich schnell summieren.


Linux
  1. Linux – Warum wird das Root-Verzeichnis mit einem / -Zeichen gekennzeichnet?

  2. Linux – Wie kombiniere ich den Baum mit der Verzeichnisgröße?

  3. Warum stimmen Ls und Hexdump nicht über die Dateigröße überein?

  4. warum unterscheidet sich die Ausgabe von `du` oft so sehr von `du -b`

  5. Warum sollte die Größe der Swap-Partition doppelt so groß sein wie die RAM-Größe?

So erhalten Sie die Größe eines Verzeichnisses in Linux

So erhalten Sie die Größe eines Verzeichnisses in Linux

So ermitteln Sie die Größe eines Verzeichnisses in Linux

So ermitteln Sie die Gesamtgröße eines Verzeichnisses in Linux

Kann ich davon ausgehen, dass die Größe von long int immer 4 Bytes beträgt?

Wie erhalte ich die tatsächliche Verzeichnisgröße (aus du)?