Wie werden die Inhalte angezeigt, die zu den Größen führen, die `ls -l` für Verzeichnisse meldet?

Wie werden die Inhalte angezeigt, die zu den Größen führen, die `ls -l` für Verzeichnisse meldet?

Ich verstehe, dass die Größen, die ls -lBerichte fürVerzeichnissespiegelt den von den „Metadaten“ für diese Verzeichnisse belegten Speicherplatz wider. Außerdem stelle ich mir vor, dass diese Metadaten in binärer/für Menschen nicht lesbarer Form vorliegen.

Gibt es einen Unix-Befehl, um diese Metadaten in einer für Menschen lesbaren Form anzuzeigen?

BEARBEITEN: Wenn die Antwort auf die obige Frage stark vom Dateisystem abhängt, welche Schlüsselwörter sollte ich verwenden, um nach der Antwort für ein bestimmtes Dateisystem zu suchen? (Ich bin an der Antwort für viele Arten von Dateisystemen interessiert, darunter NFS, Ext3, Ext4, VFAT, GPFS, TMPFS und Lustre). Wenn ich beispielsweise nach „So zeigen Sie Verzeichnisdaten/-informationen/-inhalte an“ usw. suche, finde ich nur Informationen dazu, wie die Dateien in einem Verzeichnis aufgelistet werden, was nicht ganz das ist, wonach ich suche.

Antwort1

lszeigt diese Informationen an, da die Daten im sizeFeld des Inodes für das Verzeichnis gespeichert sind. Dies ist dateisystemabhängig. Ein bestimmtes Dateisystem könnte dort andere Informationen enthalten. Beispielsweise meldet ZFS die Anzahl der Verzeichniseinträge in diesem Feld.

Wenn Sie sich für diese Ebene interessieren, ist das Lesen der Daten ganz einfach. lsund statsind Tools, mit denen Sie die Inode-Informationen auf verschiedene Weise anzeigen können. Sie können sie untersuchen, um zu sehen, wie Sie die Daten abrufen und in einer für Menschen lesbaren Form anzeigen können. Sehen Sie sich Folgendes an:Statistik(2)für den Systemaufruf zum Abfragen der Informationen.

Wenn Sie diese Zahl direkt erfassen möchten, sollten Siestat -c "%s"

% ls -ld /
drwxr-xr-x 44 root root 4096 Jun 10 17:11 /
% stat -c "%s" /
4096

Antwort2

Ja, das gibt es: Es heißt ls

Die von für ein Verzeichnis gemeldete Größe lsist die Größe des Verzeichnisinhalts. Es sind keine Metadaten des Verzeichnisses, sondern Metadaten der Dateien im Verzeichnis. Das meiste davon wird mit aufgelistet ls -la.

Bei einigen Unix-Varianten können Sie die binäre Form dieser Daten anzeigen, indem Sie cat(oder odusw.) für das Verzeichnis aufrufen. Dies ist unter Linux nicht der Fall, und auf Systemen, auf denen dies möglich ist, kann die Interpretation dieser Daten vom Dateisystemtyp abhängen oder normalisiert werden (um mit historischen Dateisystemtypen kompatibel zu sein). SieheSeit wann sind Verzeichnisse nicht mehr als Dateien lesbar?UndOktaldump des Verzeichnisses

Die von gemeldete Größe ist aus mehreren Gründen lsgrößer als zum Speichern der mit angezeigten Daten erforderlich :ls

  • Möglicherweise werden Metadaten lsnicht angezeigt, z. B. Sperrlisten für den Dateiinhalt.
  • Es kann zu Auffüllungen kommen, z. B. hier und da ungenutzte Bits, Ausrichtung an Maschinenwortgrenzen, Dateinamen, die in Feldern mit fester Größe gespeichert sind usw.
  • Es gibt Metadaten zum Organisieren der Liste der Dateinamen, z. B. eine B-Baum- oder Suchbaumstruktur.
  • Normalerweise sind Dateien in Blöcken organisiert und eine Datei verwendet eine ganze Anzahl von Blöcken, wobei der letzte Block nur teilweise gefüllt ist, es sei denn, die Dateigröße beträgt genau ein Vielfaches der Blockgröße.
  • Auf manchen Dateisystemen, wie etwa ext4, geben Verzeichnisse ungenutzte Blöcke nicht zurück, nachdem sie stark gewachsen sind (weil sie viele Dateien enthielten) und anschließend stark geschrumpft sind (weil viele Dateien gelöscht wurden).

Wenn Sie Informationen zu Dingen wünschen, die lsIhnen nicht angezeigt werden, müssen Sie direkt in den Verzeichnisinhalt schauen. Führen Sie entweder odo. ä. auf dem Verzeichnis aus, wenn Ihre Unix-Variante dies zulässt, oder verwenden Sie ein Low-Level-Tool wie einen Hex-Viewer auf der Partition oder einen Dateisystem-Debugger wiedebugfsfür ext2/ext3/ext4. Die Informationen, die Sie auf diese Weise sehen, gelten nicht als „menschenlesbar“, außer für die wenigen Leute, die mit dem Dateisystemformat bestens vertraut sind.

verwandte Informationen