Website-Suche

Linux-Hardlink vs. Softlink


Softlinks und Hardlinks sind die beiden Arten von Links, die auf einem Linux-System erstellt werden können. Ohne es zu merken, haben Sie zweifellos mit Tonnen von Hardlinks auf Ihrem eigenen System interagiert. Und höchstwahrscheinlich sind Sie auch auf einige Softlinks (auch symbolische Links oder Symlinks genannt) gestoßen. Das liegt daran, dass die Dateien, mit denen Sie täglich auf Ihrem System arbeiten, entweder Hardlinks oder Softlinks sind, die auf Daten auf Ihrer Festplatte verweisen. Was wir normalerweise als "Datei" betrachten, ist in Wirklichkeit ein Inode, der auf einen Datenblock auf unserer Festplatte zeigt, und der Hardlink ist die Art und Weise, wie wir damit interagieren.

Auf der anderen Seite ist es nützlich, Softlinks als "Abkürzungen" zu betrachten, die nur auf Hardlinks verweisen. Sowohl Hardlinks als auch Softlinks haben ihre eigenen Anwendungsfälle, wobei erstere eine Möglichkeit sind, auf Inodes zuzugreifen, die auf unserer Festplatte gespeichert sind, und letztere hauptsächlich für bequeme Verknüpfungen verwendet werden. In diesem Tutorial erklären wir Hardlinks vs. Softlinks unter Linux. Sie erfahren, wie sie sich voneinander unterscheiden, wofür sie jeweils verwendet werden und wie Sie beide Arten von Links erstellen und bearbeiten. Fangen wir an!

In diesem Tutorial lernen Sie:

  • Was ist ein Softlink?
  • Was ist ein Hardlink?
  • So erstellen Sie Hardlinks und Softlinks
  • So löschen/entkoppeln Sie Hardlinks und Softlinks

Hard Links und Soft Links – was ist der Unterschied?

Um den Unterschied zwischen Hardlinks und Softlinks und deren Zweck vollständig zu verstehen, müssen wir zunächst verstehen, wie Dateien unter Linux gespeichert werden. Jede Datei in unserem System verfügt über Metadaten, die mit ihr verknüpft sind, wie z. B. die Erstellungs-, Änderungs- und Zugriffszeiten sowie Dateiberechtigungen usw. Diese Information wird als Inode gespeichert. Der Inode enthält auch Daten darüber, wo sich der Inhalt der Datei auf der Festplatte befindet.

Der Zweck eines Inode besteht darin, sich daran zu erinnern, wo die Daten einer Datei und alle zugehörigen Metadaten gespeichert sind. Das Dateisystem verwendet diese Informationen, um z. B. zu wissen, welche Berechtigungen und Dateieigentümer mit der Datei verknüpft werden sollen und wo auf den Datenblock der Datei auf der Festplatte zugegriffen werden kann. Damit ein Benutzer auf einen Inode zugreifen kann, stellt das Linux-System den Benutzern Hardlinks zur Verfügung. Ein harter Link zeigt auf eine Inode.

Die andere Art von Links unter Linux sind Softlinks (oder symbolische Links). Softlinks verweisen nur auf Hardlinks und geben uns eine alternative Möglichkeit, auf den Hardlink aus anderen Verzeichnissen oder unter anderen Namen zuzugreifen. Sie sind effektiv Abkürzungen. Sowohl Hardlinks als auch Softlinks geben Benutzern die Möglichkeit, über mehrere Namen und Pfade auf Dateien und Verzeichnisse zuzugreifen.

Erstellen von Hardlinks

Sehen wir uns nun an, wie man Hardlinks unter Linux erstellt.

WUSSTEN SIE SCHON?
Hardlinks können nicht über verschiedene Dateisysteme hinweg verwendet werden, und es ist nicht möglich, einen Hardlink zu einem Verzeichnis zu erstellen.

  1. Beginnen wir damit, eine einfache Datei zu erstellen, mit der Sie in unserem Beispiel herumspielen können. Mit dem folgenden Befehl wird eine Datei mit dem Namen myfile.txt im Basisverzeichnis des aktuellen Benutzers erstellt. Er enthält den Text "Beispieltext".

    
    echo "sample text" > ~/myfile.txt
    
  2. Wir können den Inhalt dieser Datei mit dem Befehl cat überprüfen. Beachten Sie, dass wir über ~/myfile.txt auf die Datei zugreifen – was selbst ein harter Link ist.

    
    cat ~/myfile.txt
    sample text
    
  3. Erstellen wir nun einen Hardlink zu unserer neuen Datei. Dies wird der zweite Hardlink zu unserer Datei sein, da das Erstellen in den obigen Schritten der erste Hardlink ist. Wir erstellen einen Hardlink mit dem Namen myhardlink im /tmp-Verzeichnis des Systems. Verwenden Sie die folgende Befehlssyntax mit ln:

    
    ln ~/myfile.txt /tmp/myhardlink
    
  4. Wenn wir nun den cat-Befehl auf unserem /tmp/myhardlink-Hardlink verwenden, werden wir feststellen, dass wir den gleichen Inhalt erhalten, als ob wir die Datei ~/myfile.txt geöffnet hätten.

    
    cat /tmp/myhardlink
    sample text
    
  5. Als Nächstes überprüfen wir die Link-Informationen, die mit beiden Dateien verknüpft sind (Hardlinks).

    
    ls -l /tmp/myhardlink
    -rw-rw-r-- 2 linuxconfig linuxconfig 14 May  8 20:20 /tmp/myhardlink
    
    ls -l ~/myfile.txt 
    -rw-rw-r-- 2 linuxconfig linuxconfig 14 May  8 20:20 /home/linuxconfig/myfile.txt
    

    Beachten Sie die zugehörige Nummer 2, wie in der obigen Ausgabe gezeigt. Diese Zahl gibt die Anzahl der Hardlinks an, die einem bestimmten Inode zugeordnet sind.

    NOTE
    Zu diesem Zeitpunkt gibt es keinen Unterschied zwischen der ursprünglichen ~/myfile.txt-Datei und dem Hardlink, den wir unter /tmp/hardlink erstellt haben. Dies sind beides Hardlinks, die auf denselben Inode verweisen.

  6. Wir können einen Hardlink mit dem typischen rm-Befehl oder mit dem Befehl unlink entfernen.

    
    unlink /tmp/myhardlink
    
  7. Überprüfen Sie die Dateilink-Informationen noch einmal, und wir sehen, dass jetzt nur noch 1 Hardlink mit diesem Inode verknüpft ist.

    
    ls -l ~/myfile.txt 
    -rw-rw-r-- 1 linuxconfig linuxconfig 12 Jun  8 20:20 /home/linuxconfig/myfile.txt
    
  8. Jetzt können wir den Befehl rm verwenden, um unsere Originaldatei zu entfernen:

    
    rm ~/myfile.txt
    

    An dieser Stelle geht der Link zu dem Inode, der auf den Inhalt unserer Originaldatei verweist, verloren, daher betrachten wir diese Datei als entfernt. Wenn es keine Hardlinks gibt, die auf einen Inode zeigen, kann es sein, dass das Dateisystem den Speicherort this inode mit einem neuen Daten überschreibt.

Erstellen von Softlinks

Im Gegensatz zu Hardlinks sind Softlinks in der Lage, Dateisysteme zu überqueren, und es ist auch möglich, einen symbolischen Link eines Verzeichnisses zu erstellen. Symbolische Links verlinken jedoch nur auf einen vorhandenen Hardlink (Datei- oder Verzeichnisname) und nicht auf einen Inode. Aus diesem Grund wird der symbolische Link unterbrochen, wenn der eigentliche Hardlink, auf den der symbolische Link zeigt, entfernt wird.

  1. Lassen Sie uns noch einmal eine Beispieldatei erstellen, mit der wir arbeiten können, um zu veranschaulichen, wie Softlinks funktionieren. Erstellen wir ein neues Verzeichnis mit dem Namen "mydir" und eine Datei darin mit dem Namen "myfile" im Home-Verzeichnis des aktuellen Benutzers.

    
    mkdir ~/mydir
    touch ~/mydir/myfile
    
  2. Als nächstes erstellen wir einen neuen symbolischen Link des bestehenden Verzeichnisses mydir, indem wir den Befehl ln mit einer Kombination der Option -s verwenden.

    
    ln -s ~/mydir /tmp/symdir
    
  3. Jetzt haben wir einen symbolischen Link namens symdir erstellt, der sich im Verzeichnis /tmp befindet. Sehen wir uns die Link-Informationen an:

    
    ls -l /tmp/symdir
    lrwxrwxrwx 1 linuxconfig linuxconfig 23 Jun  8 20:34 /tmp/symdir -> /home/linuxconfig/mydir
    

    Beachten Sie das erste Zeichen der obigen Ausgabe. In diesem Fall zeigt das Zeichen l an, dass es sich um eine symbolische Verbindung handelt.

    NOTE
    Wenn Sie symbolische Links erstellen, denken Sie daran, dass der ln-Befehl den tatsächlich angegebenen Pfad als Zeichenfolge speichert. Wenn Sie sich nicht im selben Verzeichnis befinden, müssen Sie in vielen Fällen den vollständigen Pfad angeben, damit der symbolische Link funktioniert

  4. Der neu erstellte symbolische Link symdir sollte die zuvor erstellte Datei myfile enthalten:

    
    cd /tmp/symdir
    ls
    myfile
    pwd
    /tmp/symdir
    

Abschließende Gedanken

In diesem Tutorial haben wir gesehen, wie sich Hardlinks und Softlinks voneinander unterscheiden und auf einem Linux-System verwendet werden. Wir haben auch gelernt, wie man Hardlinks und Softlinks erstellt und wie man sie löscht. Die Schlussfolgerung ist, dass harte Links auf eine Inode verweisen, symbolische Links jedoch nur auf harte Links. Um eine Datei vollständig zu löschen (oder sie zumindest als überschreibbar für das Dateisystem zu markieren), müssen alle Hardlinks gelöscht werden.

Verwandte Artikel: