Hardlinks und Softlinks sind zwei gängige Linkdateitypen unter Linux-Systemen. Wenn Sie mehr über das Konzept von Hardlinks und Softlinks erfahren möchten, werde ich Sie durch die Recherche führen. Wenn Sie diesen Artikel lesen, werden Sie die Unterschiede und Eigenschaften von Hardlinks und Softlinks vollständig verstehen.
Erstens gibt es unter dem Linux-System zwei Arten von Linkdateien, eine ist Hard Link und die andere ist Soft Link, auch Symbolic Link genannt.
Sie können den Befehl ln verwenden, um einen Hardlink unter einem Linux-System zu erstellen:
ln [Parameter] [Quelldatei oder -verzeichnis] [Zieldatei oder -verzeichnis]
Im Dateisystem verfügt jede Datei über einen Indexknoten (Inode-Index). Dieser Indexknoten wird zur Identifizierung der Datei verwendet, und feste Links werden über diesen Indexknoten verknüpft. Hardlinks können nur zwischen Dateien im selben Dateisystem erstellt werden, und Verzeichnisse können nicht erstellt werden. Es können jedoch mehrere Hardlinks erstellt werden, dh mehrere Dateien können auf denselben Indexknoten verweisen oder eine Datei kann mehrere Pfadnamen haben , sodass eine Datei mehreren Dateinamen entsprechen kann.
Wir können den Befehl ls verwenden, um die Quelldatei und den Inode des soeben erstellten Hardlinks anzuzeigen:
Auf dem Bild kann ich erkennen, dass die Indexknoten der Quelldatei und der Hardlink-Datei identisch sind, sodass die Quelldatei und die Hardlink-Datei auf denselben Indexknoten verweisen.
Warum können Verzeichnisse also keine Hardlinks erstellen? Lass es uns versuchen.
Wie im Bild oben gezeigt, dürfen Benutzer keine festen Links für Verzeichnisse erstellen. Wenn wir feste Links für Verzeichnisse erstellen, überlegen wir uns in diesem Fall, ob der Verzeichnisbaum kreisförmig sein wird ? , wenn wir die Dateien in diesem Verzeichnis finden möchten, können wir sie nicht anhand des Namens finden.
Ein Hardlink entspricht dem Erstellen einer Kopie der Quelldatei. Wenn der Inhalt der Hardlinkdatei geändert wird, ändert sich auch der Inhalt der Quelldatei.
Haben wir bei der Entwicklung unter Linux schon einmal die Situation erlebt, dass wir versehentlich einige Dateien gelöscht haben und dann versucht haben, sie wiederherzustellen, aber nichts dagegen tun konnten?
Wenn Sie nicht wissen, wie man wiederherstellt, werden Sie eine Lektion lernen und beim nächsten Mal ein paar weitere feste Links erstellen, damit diese Datei mehrere Links hat. Es ist in Ordnung, die Quelldatei oder andere Hardlink-Dateien weiterhin zu verwenden, aber das Löschen eines der Links hat keine Auswirkungen auf den Indexknoten und andere Links, da nur der Link von der Datei zum Indexknoten gelöscht wird Da der letzte und einzige Link nicht gelöscht wird, muss ich den letzten Tropfen noch retten.
Versuchen wir, den Hardlink zu löschen und sehen:
Allerdings enthalten Linux-Systeme mehrere Dateisysteme, und diese Dateisysteme befinden sich auf verschiedenen Festplatten oder Partitionen. Wie bereits erwähnt, können feste Links nur unter demselben Dateisystem erstellt werden komfortabel?
Ja, Hardlinks können nur so sein, aber wie können wir klugen Menschen nur so sein? Zu diesem Zeitpunkt kommen Softlinks ins Spiel. Was ist also mit Softlinks passiert?
Unter Linux-Systemen können Softlinks Dateien oder Verzeichnisse teilen, genau wie Verknüpfungen unter Windows.
Wir können den Inhalt eines Softlinks einfach als Link oder Pfad betrachten. Wenn wir einen Softlink verwenden, greifen wir über den Inhalt des Softlinks auf den Inhalt des Links oder Pfads zu, genau wie wir www.baidu verwenden. com-Link, um Baidu zu besuchen, oder verwenden Sie sudo vim /etc/network/interfaces unter Ubuntu, um auf den Inhalt im Pfad /etc/network/interfaces zuzugreifen.
Wie bereits erwähnt, können Hardlinks nur unter demselben Dateisystem erstellt werden, sodass Softlinks nicht dieser Einschränkung unterliegen. Es versteht sich, dass Softlinks erstellt werden, um diese Einschränkung aufzuheben.
Eine Softlink-Datei kann auf jede Datei oder jedes Verzeichnis in jedem Dateisystem verweisen. Darüber hinaus kann ein Softlink auch auf eine nicht vorhandene Datei verweisen, Sie können jedoch keinen Hardlink zu einer nicht vorhandenen Datei erstellen!
An dieser Stelle sollten Sie wissen, was ein Softlink ist!
Verwenden Sie den Befehl ln, um unter einem Linux-System einen Softlink zu erstellen, der dem Befehl zum Erstellen eines Hardlinks ähnelt:
1. Softlink erstellen:
2. Softlink löschen:
Auf dem Bild oben können wir sehen, dass beim Löschen der Quelldatei der Name der Softlink-Datei immer noch im Verzeichnis angezeigt wird, aber wenn wir die Softlink-Datei tatsächlich anzeigen, existiert sie tatsächlich nicht mehr und wird zu einem toten Link. Es ist nur so, dass es immer noch im Verzeichnis angezeigt wird. Denken wir an die Verknüpfungen in Windows. Es ist auch so, wenn wir alle Quelldateien einer in Windows installierten APP löschen Die Methode wird immer noch auf dem Desktop angezeigt, aber wenn wir mit der Maus auf die Verknüpfung klicken, erscheint ein Fenster mit dem Hinweis, dass die Datei nicht mehr existiert.
Wenn wir die Verknüpfung nicht auf dem Windows-Desktop haben möchten, können wir die Verknüpfung einfach direkt löschen. Das Gleiche gilt für Softlinks. Wir können die Softlinks einfach direkt löschen.
Wir sollten auf ein kleines Problem achten, wenn wir keine relativen Pfade wie ich verwenden. Das heißt, Sie müssen absolute Pfade verwenden, nicht auf relative Pfade, auf die nicht zugegriffen werden kann wird beim Zugriff gemeldet:
Zu viele Ebenen symbolischer Links.
Wenn Sie sehen, dass diese Zeile einen Fehler meldet, wird das Problem durch die Änderung auf einen absoluten Pfad gelöst.
Lassen Sie mich kurz auf zwei Orte eingehen, an denen ich Softlinks in tatsächlichen Szenarien verwende:
“
1. Manchmal müssen wir viele Befehle ausführen, und die ausgeführten Befehle entsprechen den Pfaden verschiedener Verzeichnisse. Es ist sehr mühsam, den gesamten Pfad einzugeben Zu diesem Zeitpunkt kommt die Rolle von Softlinks ins Spiel. Wenn Sie einen Softlink von diesen langen und stinkenden Pfaden zum aktuellen Pfad erstellen, wird der Pfad viel einfacher.
“
“
2. Ich habe viele Arten von Cross-Compilern in der virtuellen Maschine installiert, und verschiedene Compiler verwenden möglicherweise unterschiedliche Bibliotheken von Drittanbietern. Die Methode muss darin bestehen, die Header-Dateien im Pfad des Compilers abzulegen und den Header zu kompilieren Die Datei wird automatisch gefunden, aber diese Bibliotheksdatei ist relativ groß. Wenn jeder Compiler sie verwenden muss, nimmt das Verschieben der einzelnen Dateien zu diesem Zeitpunkt die Rolle von Softlinks ein , erstellen wir einen Softlink und geben die Bibliotheksdatei frei, wodurch auch der belegte Speicherplatz reduziert werden kann.
“
Es gibt viele Funktionen von Softlinks. Wir müssen die Funktionen von Softlinks in verschiedenen Szenarien flexibel nutzen, um unsere Arbeit zu erleichtern oder die Arbeitseffizienz zu verbessern.
In tatsächlichen Anwendungen werden Hardlinks weniger und Softlinks häufiger verwendet.
Das obige ist der detaillierte Inhalt vonVerstehen Sie Linux-Hardlinks und Softlinks gründlich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!