Was ist der Unterschied zwischen Verzeichnisstruktur und Dateisystem ?
Unix / Linux- Verzeichnisse und Dateisysteme sehen wie folgt aus:
Die folgenden zwei Verzeichnisse kennen wir offensichtlich.
/home/abc/xyzdir1 --is a directory
/home/abc/xyzdir2 -- is a directory
Die folgenden drei Beispiele sagen Dateisystem.
/proc -- is a file system
/ -- is a file system
/bin -- is a file system
Wie kann ich anhand der obigen Codeausschnitte erkennen, welches ein Dateisystem und ein Verzeichnis ist ?
filesystems
directory-structure
proc
Premraj
quelle
quelle
/proc
,/
und/bin
anhand Ihrer Beispiele), daher ist mir nicht klar, wie Sie den "Unterschied" identifizieren möchten./proc
,/
Und/bin
sind Verzeichnisse. Sie sind keine "Dateisysteme". Meinen Sie vielleicht, Sie möchten herausfinden, welche Verzeichnisse auch der Einhängepunkt (root) ihres Dateisystems sind?Antworten:
Die Leute gehen nicht zu vorsichtig mit dem Dateisystem um . In Ihrem Beispiel, würde ich sagen , dass
/
,/bin
und/proc
sind Dateisysteme , da eine ganze Partition (wie/dev/sdb1
) auf diesen Verzeichnissen montiert ist. Mein Arch Linux-System hat kein/bin
Dateisystem, daher ist dieses Beispiel nicht perfekt, aber ...Inode Nummer 2 ist traditionell der "Root" -Inode eines gesamten On-Disk-Dateisystems (was die andere Verwendung des Ausdrucks ist).
/
,/boot
Und/home
alle haben Inode - Nummer 2, während/proc
, die vom Kernel vollständig präsentiert wird und nicht über eine On-Disk - Präsenz, hat Inode 1. Diese Inode - Nummern zeigt an, dass insgesamt On-Disk - Dateisystem oder einem virtuellen Dateisystem wird unter diesem Namen gemountet.Der Satz "
/home/abc/xyzdir1
ist ein Verzeichnis" bedeutet im Grunde, dass kein Dateisystem auf der Festplatte unter diesem Namen bereitgestellt wird. Wenn Sie denselbenls -lid
Befehl für ein Verzeichnis ausführen, erhalten Sie Folgendes:Die Inode-Nummer 3670039 ist genau das, von dem der Inode im On-Disk-Dateisystem (auf meinem Computer) unter zugewiesen wurde
/home
.Sie können Dateisysteme auch finden, indem Sie den
mount
Befehl aufrufen . Es listet alle gemounteten Dateisysteme auf und wo sie gemountet sind.quelle
/
,/bin
und/proc
sind Dateisysteme , da eine ganze Partition ... auf diese Verzeichnisse montiert ist. Dies gilt nicht für/proc
, wie die Antwort später impliziert.Auf die Gefahr einer starken Vereinfachung,
Da ich um eine Zugabe gebeten wurde,
Wenn Sie Code benötigen, lesen Sie die erste Hälfte dieser Antwort unter So ermitteln Sie, ob ein Linux-Dateisystem zu einem laufenden System gehört - der Teil, der die Validierung durchführt
root_dir
. Es macht nur das, was Bruce gesagt hat; Überprüfen Sie, ob es sich um ein Verzeichnis handelt, und überprüfen Sie, ob die Inode-Nummer 1 oder 2 ist.quelle
So wie ich es sehe, ist ein Dateisystem im UNIX-Sinne eine Möglichkeit, einen Verzeichnisbaum (Verzeichnisstruktur) zu implementieren, genauer gesagt, eine Möglichkeit, die UNIX-Dateisystem-API zu implementieren. Das Root-Dateisystem wird von einer bestimmten Implementierung unterstützt. Wenn Sie ein Mountpoint-Verzeichnis eingeben, geben Sie einen Teilbaum ein, der von etwas anderem unterstützt wird.
Die Schnittstelle ist immer dieselbe, aber in einem Fall haben Sie eine bestimmte Festplattenpartition am Back-End, in einem anderen Fall gibt es ein Programm, das niemals auf ein Speichergerät schreibt. Das
proc
Dateisystem wird von einer Software unterstützt, die Kernel-Interna verfügbar macht. atmpfs
wird von einer Software gesichert, die in den Arbeitsspeicher schreibt, und andere Dateisysteme schreiben möglicherweise in das Netzwerk oder anderswo.Im Nicht-UNIXy-Sinne ist ein Dateisystem eine Möglichkeit, die Datenspeicherung zu organisieren.
ext4
,btrfs
,fat
, Undntfs
sind Dateisysteme in diesem Sinne, sondern auch in der Unixy Sinnes sie den Dateisystem - API implementieren.proc
würde nicht als Dateisystem innerhalb dieses, eingeschränkteren Paradigmas klassifiziert werden, da es die Datenspeicherung nicht organisiert.TL; DR:
quelle
Während die Verzeichnisakzeptanz bei Dateisystemen eindeutig ist, kann das Dateisystem je nach dem, worüber Sie sprechen, unterschiedliche Bedeutungen haben.
In Ihren Beispielen sind alle aufgelisteten Pfade Verzeichnisse, aber nur einige von ihnen sind auch Mount-Punkte von Dateisystemen.
Mit dem
df
Befehl können Sie feststellen , auf welchem Dateisystem sich eine bestimmte Datei oder ein bestimmtes Verzeichnis befindet, und mit demmount
Befehl auf den meisten Unix- und Linux-Implementierungen können Sie herausfinden, welche Dateisysteme auf Ihrem Computer vorhanden sind, welchen Typ sie haben und welche Einhängepunkte sie haben. z.B:Die Aussage
/bin
ist ein Dateisystem ist zweifelhaft,/bin
wird fast immer gemountet/
.quelle
Zuerst eine Korrektur Ihrer Annahme über ein Dateisystem und ein Verzeichnis. Ein Dateisystem enthält ein oder mehrere Verzeichnisse. Verwenden Sie Ihre Beispiele
/proc
,/
und/bin
sind Verzeichnisse. Sie sind an und für sich keine "Dateisysteme", aber sie können die Wurzel ihrer jeweiligen Dateisysteme sein.Wenn Sie herausfinden möchten, welche Verzeichnisse auch der Einhängepunkt (Root) ihres Dateisystems sind, können Sie Folgendes verwenden:
quelle
Das Dateisystem ist eine Methode zum logischen Organisieren und Speichern großer Datenmengen, sodass das System einfach zu verwalten ist. Ein Dateisystem besteht aus Dateien, Beziehungen zu anderen Dateien sowie den Attributen (Dateityp, Dateiname, Dateigröße, Dateieigentümer, Dateizeitstempel) jeder Datei.
Verzeichnisse : Beispielsweise besteht das Unix-Dateisystem im Wesentlichen aus Dateien und Verzeichnissen. Verzeichnisse sind spezielle Dateien, die andere Dateien enthalten können. Das oberste Verzeichnis ist
/
(Schrägstrich), wobei die Verzeichnisse direkt darunter Systemverzeichnisse sind./
Root des Linux-Dateisystems/bin
Hier werden binär ausführbare Dateien gespeichert/boot
Bootbezogene Dateien werden hier gespeichert/dev
Gerätedateien werden hier gespeichert/etc
Hier werden systemweite Konfigurationsdateien gespeichert/home
Speicherort für die Home-Verzeichnisse der regulären Benutzer/lib64
Hier werden Bibliotheken für ausführbare Binärdateien gespeichert/mnt
Temporärer Einhängepunkt für DVD-Rom, USB-Stick./opt
Optionale Programme werden hier wie Programme in Windows installiert/proc
Kernel-Pseudo-Dateisystem/root
Home-Verzeichnis von Super User Root/sbin
System Binary Executable-Dateien werden hier gespeichert/tmp
Temporäre Dateien werden hier aufbewahrt/usr
Benutzer-Dateisystem/var
Hier werden variable Dateien gespeichert/srv
ist ein Serve-Ordner, der standortspezifische Daten enthält, die von diesem System bereitgestellt werden.src und für mehr
Die folgenden zwei Verzeichnisse sind benutzerdefinierte Verzeichnisse:
quelle
Wenn Sie nur einen Befehl benötigen, der Ihnen sagt, ob der Pfad ein Verzeichnis ist oder nicht, verwenden Sie mountpoint (1) .
Für mich druckt es
Das Gute ist, dass der Exit-Status wieder dasselbe anzeigt, sodass Sie ihn in Ihren Skripten wie folgt verwenden können:
quelle