Unter Linux gibt es zwei Arten von Dateiverbindungen. Eine ähnelt einer Windows-Verknüpfung, mit der Sie schnell auf die Zieldatei (oder das Zielverzeichnis) verlinken können. Dies wird als Softlink oder auch symbolischer Link bezeichnet. Die andere besteht darin, über die Inode-Verbindung des Dateisystems einen neuen Dateinamen zu generieren, anstatt eine neue Datei zu erstellen. Dies wird als Hardlink oder auch Entity-Link bezeichnet. Softlinks und Hardlinks sind zwei völlig verschiedene Dinge. 1. Harter Link 1.1 Einleitung Im Allgemeinen besteht eine Eins-zu-eins-Entsprechung zwischen Dateinamen und Inode-Nummern, und jede Inode-Nummer entspricht einem Dateinamen. Unix/Linux-Systeme lassen jedoch zu, dass mehrere Dateinamen auf dieselbe Inode-Nummer verweisen. Dies bedeutet, dass auf denselben Inhalt unter verschiedenen Dateinamen zugegriffen werden kann. Eine Änderung des Dateiinhalts wirkt sich auf alle Dateinamen aus. Das Löschen eines Dateinamens hat jedoch keine Auswirkungen auf den Zugriff auf einen anderen Dateinamen. Diese Situation wird als „harter Link“ bezeichnet. Mit dem Befehl ln können Hardlinks erstellt werden: ln <Quelldatei> <Hardlink> Nach dem Ausführen des obigen Befehls sind die Inode-Nummern der Quelldatei und der Zieldatei identisch und beide verweisen auf denselben Inode. In den Inode-Informationen gibt es ein Element namens „Linkanzahl“, das die Gesamtzahl der auf den Inode verweisenden Dateinamen aufzeichnet und zu diesem Zeitpunkt um 1 erhöht wird. Umgekehrt reduziert das Löschen eines Dateinamens die „Linkanzahl“ im Inode-Knoten um 1. Wenn dieser Wert auf 0 sinkt und damit anzeigt, dass kein Dateiname auf diesen Inode verweist, wird das System diese Inode-Nummer und den entsprechenden Blockbereich wiederverwenden. Lassen Sie mich übrigens über die „Anzahl der Links“ von Verzeichnisdateien sprechen. Beim Erstellen eines Verzeichnisses werden standardmäßig zwei Verzeichniseinträge generiert: " und "…". Die Inode-Nummer des ersteren ist die Inode-Nummer des aktuellen Verzeichnisses, was einem „Hardlink“ des aktuellen Verzeichnisses entspricht; die Inode-Nummer des letzteren ist die Inode-Nummer des übergeordneten Verzeichnisses des aktuellen Verzeichnisses, was einem „Hardlink“ des übergeordneten Verzeichnisses entspricht. Daher ist die Gesamtzahl der „Hardlinks“ eines Verzeichnisses immer gleich 2 plus der Gesamtzahl seiner Unterverzeichnisse (einschließlich versteckter Verzeichnisse), wobei sich 2 auf den „Hardlink“ zum Verzeichnisnamen selbst und den „Hardlink“ auf den „.“ im aktuellen Verzeichnis bezieht. 1.2 Beziehung zwischen Hardlinks und Inodes Ein Hardlink ist im Wesentlichen ein Alias für eine Datei, die demselben Inode wie die Quelldatei zugeordnet ist. Erstellen Sie als Nächstes die Quelldatei lvlv.txt und den Hardlink lvlv_hd.txt in den Verzeichnissen /etc und /root und überprüfen Sie die Dateieigenschaften. #Erstellen Sie einen Hardlink ln /etc/lvlv.txt /root/lvlv_hd.txt #Dateiattribute auflisten ll -i /etc/lvlv.txt 7792474 -rw---x--x 2 b3335 b3335 22. November 9 21:05 lvlv.txt ll -i /root/lvlv_hd.txt 7792474 -rw---x--x 2 b3335 b3335 22. November 9 21:05 lvlv_hd.txt Aus dem Obigen können wir erkennen, dass der Inode des Hardlinks /etc/lvlv_hd.txt derselbe ist wie der der Quelldatei lvlv.txt und auch die anderen Informationen genau gleich sind. Das Speicherdiagramm sieht wie folgt aus: Der Inhalt in der Abbildung zeigt, dass der Hardlink lvlv_hd.txt im Verzeichnis /root und die Datei lvlv.txt in /etc über denselben Inode auf denselben Dateiinhalt verweisen. Die Datenentität des Verzeichnisses zeichnet jeden Dateinamen und die Inode-Nummer der Datei auf. Es ist ersichtlich, dass ein Hardlink im Wesentlichen ein Alias für eine Datei ist. 1.3 Hinweise zu Hardlinks Für Hardlinks gelten zwei Einschränkungen: (2) Es kann keine Verbindung zum Verzeichnis hergestellt werden. Denn mit Verzeichnissen verbundene Hardlinks können dazu führen, dass der Inode und der physische Block des Verzeichnisses eine Schleife bilden. Wenn das Verzeichnis zu diesem Zeitpunkt gelöscht wird, ist der Verzeichnis-Entitätsblock für das System nicht mehr zugänglich, was zu einem isolierten Verzeichnis führt (auf das vom Stammverzeichnis aus nicht mehr zugegriffen werden kann). Wenn Sie verwaiste Verzeichnis-Inodes und Entitätsblöcke löschen möchten, müssen Sie Markierungen und Bereinigungen durchführen, was auf der Festplatte sehr zeitaufwändig ist. Bei Softlinks tritt dieses Problem nicht auf, da sie die Linkanzahl des Zielverzeichnisses nicht erhöhen. Wenn beispielsweise ein Hardlink /etc/etc_hd im Verzeichnis /etc oder seinem Unterverzeichnis erstellt wird, entsteht eine Schleife, wie in der folgenden Abbildung dargestellt: Wenn Sie zu diesem Zeitpunkt 2. Weicher Link Im Gegensatz zu einem Hardlink erstellt ein Softlink eine unabhängige Datei mit einem eigenen Inode, diese Datei leitet das Lesen von Daten jedoch an die Datei weiter, mit der sie verbunden ist. Da für die Zeigeroperation nur die Datei verwendet wird, wird beim Löschen der Quelldatei die Meldung „Kann nicht geöffnet werden“ für die Softlink-Datei angezeigt und die gelöschte Quelldatei kann nicht gefunden werden. Lassen Sie uns einen Softlink erstellen und die Eigenschaften des Softlinks anzeigen: #Erstellen Sie einen Softlink $ ln -s /etc/lvlv.txt lvlv_sb.txt #Dateiattribute anzeigen $ ll -i 7792474 -rw---x--x 2 b3335 b3335 22. November 9 21:05 lvlv.txt [b3335@MIC-Wurzel]$ ll -i 7792478 lrwxrwxrwx 1 b3335 b3335 13. November 10 15:23 lvlv_sb.txt -> /etc/lvlv.txt Es ist ersichtlich, dass sich der Inode-Knoten des Softlinks von der Quelldatei lvlv.txt unterscheidet und die Größe des Softlinks genau der Länge der Zeichenfolge „/etc/lvlv.txt“ 13 entspricht. Es ist ersichtlich, dass der Softlink eine separate neue Datei ist und der Inhalt der Datei der Pfad der angegebenen Datei ist. Nachfolgend sehen Sie eine schematische Darstellung eines Softlinks, wobei die Datei lvlv.txt als Beispiel dient. Oben finden Sie detaillierte Informationen zur Unterscheidung von Linux-Hardlinks und -Softlinks. Weitere Informationen zu Linux-Hardlinks und -Softlinks finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Drei Möglichkeiten, doppeltes Einfügen von Daten in MySql zu vermeiden
>>: Eine kurze Diskussion über die perfekte Anpassungslösung für das mobile Vue-Terminal
Wenn Sie einige 64-Bit-Anwendungen (wie 64-Bit-JD...
Beschreibung der Sicherheitslücke Apache Flink is...
Detaillierte Erklärung zur Fehlplatzierung des Ein...
Gestern Abend habe ich einen Aufsatz über den Bro...
Inhaltsverzeichnis 1. Einleitung 2. JDBC implemen...
1. Dynamisches Laden von Skripten Mit der wachsen...
Das Clustering ist eigentlich relativ zur InnoDB-...
Kürzlich stieß ich auf das Problem, ob die Daten b...
Bearbeiten Sie docker-compose.yml und fügen Sie d...
Die einfache Installationskonfiguration von mysql...
Server: Ubuntu Server 16.04 LSS Kunde: Ubuntu 16....
Erster Blick auf die Wirkung: html <a href=&qu...
Beispiel: Wir verwenden den Python-Code loop_hell...
Vorwort Ab MySQL 5.7.11 unterstützt MySQL die Dat...