Linux-ln-Befehl – So erstellen Sie Links unter Linux

Mit der Kommandozeile von Linux sind Links schnell erstellt. Der dafür benötigte ln-Befehl ist relativ leicht anzuwenden; man benötigt für viele Anwendungsroutinen nur relativ wenig Code. Wer gezielt und effizient verlinken möchte, sollte allerdings den Unterschied zwischen Hard- und Softlinks kennen. Wir erläutern, wofür die jeweilige Link-Variante besonders geeignet ist. Außerdem zeigen unsere Anwendungsbeispiele, welcher Code für Verlinkungen unter Linux notwendig ist.

Was ist der Linux-ln-Befehl?

Mit dem Linux-ln-Befehl (ln ist die Abkürzung für den englischen Begriff Link) werden Verknüpfungen auf eine Datei oder ein Verzeichnis erzeugt. Zur Eingabe nutzt man die Kommandozeile von Linux (auch Shell genannt), die über ein Terminal-Fenster geöffnet und bedient wird. Unter Linux zählt der ln-Befehl zu den wichtigsten und am häufigsten verwendeten Linux-Terminal-Kommandos. Mit dem Kommandozeilenbefehl können Soft- oder Hardlinks erzeugt werden.

Was sind Soft- und Hardlinks?

Um unter Linux den ln-Befehl sinnvoll und gezielt einsetzen zu können, sollte man den Unterschied zwischen Soft- und Hardlinks kennen: Softlinks sind Querverweise, die eine Ursprungsdatei über einen Verweispfad adressieren. Verschiebt oder löscht man die Originaldatei, gibt es kein Zielobjekt mehr und der Wegweiser läuft ins Leere. Löscht man hingegen den Softlink, bleibt die Originaldatei erhalten; es wird ja nur der Verweis auf diese Datei entfernt. Softlinks werden auch symbolische Links oder (abgekürzt) Symlinks genannt. Softlinks können nicht nur mit dem ln-Befehl im Linux-Terminal, sondern auch mit Funktionen der grafischen Benutzeroberfläche, etwa im Dateimanager von Linux, erstellt werden. Auf der grafischen Benutzeroberfläche von Linux erkennt man einen Softlink an einem Pfeilsymbol, das zusätzlich auf dem Icon der Datei platziert ist.

Hardlinks können nur auf der Kommandozeile erzeugt werden. Sie sind weitreichender als Softlinks in die Speicherverwaltung eines Betriebssystems und das jeweils verwendete Dateisystem integriert. Ein Hardlink ist ein zusätzlicher Verzeichniseintrag für eine Originaldatei, wobei auch mehrere harte Links auf dieselbe Datei verweisen können. Letztlich unterscheidet Linux technisch und operativ nicht zwischen Original bzw. Originallink (Primärlink) und einem später generierten Hardlink (Folge- und Sekundärlink). Daher sind auch alle Verzeichniseinträge gleichberechtigt und funktionieren unabhängig voneinander. Durch einen Hardlink kann der Zugriff auf eine Datei an verschiedenen Orten ermöglicht werden, was etwa häufig für Backups genutzt wird.

Die Besonderheiten und die Funktionsweise von Hardlinks kann man am besten an einem konkreten Beispiel erklären. Eine Videodatei, die zunächst nur im Verzeichnis „Meine Videos“ zugänglich ist, kann nach Anlegen eines Hardlinks auch über das Verzeichnis „Meine Videos-Backup“ abgerufen werden. Löscht man nun die Originaldatei in „Meine Videos“ (streng genommen wird nur der primäre Verweis auf die Videodatei gelöscht), ist sie über den gleichwertigen Parallelzugang (Hardlink-Pfad zur Datei im Verzeichnis „Meine Videos-Backup“) immer noch problemlos erreichbar. Dabei haben Hardlinks den Vorteil, dass ein zusätzlicher Vermerk in der Speicherverwaltung nicht den doppelten Speicherplatz in Anspruch nimmt. Sie sind lediglich alternative Zugangsoptionen (via Dateipfad) und repräsentieren keine komplette zweite physische Kopie einer Datei.

Hardlinks sind unter Linux eng mit einer speziellen internen Buchführung verknüpft. Jeder Hardlink verweist auf einen sogenannten Inode und wird einer unverwechselbaren und eindeutigen Inode-Nummer zugeordnet, die ebenfalls der Originaldatei zugewiesen ist. Eine Datei wird erst endgültig in der Inode-Verwaltung und damit auch im System gelöscht, wenn alle Einträge (also sämtliche Verweise auf diese Datei) durch Löschoperationen für ungültig erklärt wurden und ein interner Link-Zähler auf null gesetzt wurde. Wird nur ein Adresseintrag von mehreren gelöscht oder die Originaldatei in ein anderes Verzeichnis verschoben, ändert sich hingegen nichts. Die verbliebenen und im Inode hinterlegten Optionen für einen Zugriff auf die Originaldatei sind weiterhin gültig.

Fakt

Inodes sind definierte Datenstrukturen, die eine Datei eindeutig beschreiben, Metadaten-Informationen über diese beinhalten (Gruppenzugehörigkeit, Eigentümer, Zugriffsrechte etc.) und ihren Speicherort (in Form einer Speicheradresse) dokumentieren.

Wofür eignen sich Hard- und Softlinks?

Mit Softlinks können Normalnutzer die meisten üblichen Verlinkungen erledigen. Man kann Dateien und Verzeichnisse auch über Dateisystemgrenzen hinweg verlinken, auch verschiedene Festplatten und Partitionen stellen kein Hindernis dar. Softlinks sind allerdings nicht so flexibel wie Hardlinks, wenn Änderungen am Referenzobjekt vorgenommen werden (Verschieben, Löschen).

Hardlinks können normalerweise nur Dateien verlinken, keine Verzeichnisse bzw. Ordner. Da die mit Hardlinks verknüpften Inode-Nummern nur innerhalb von Partitionen verwaltet werden können, sind nur partitionsinterne Verlinkungen möglich. Moderne Linux-Systeme enthalten aber häufig verschiedene Dateisysteme, die sich auf unterschiedlichen Festplatten und Partitionen befinden. Wer bei der Erstellung von Links unter Linux gezielt mit Hardlinks arbeitet, sollte also sein System kennen und über ein gewisses Grundwissen verfügen (etwa in den Bereichen Partitionierung, Formatierung).

Dennoch gibt es vor allem bei Backups einige Vorteile. Man erhält alternative Zugriffe auf das Original, die platzsparend sind und zugleich die Datensicherheit erhöhen. Diese positiven Eigenschaften der Verlinkungstechnik nutzt etwa die Software HardlinkBackup.

Da Hardlinks die Ursprungsdatei direkt repräsentieren, müssen sie im Gegensatz zu Softlinks nicht durch Rechenprozesse dereferenziert werden. Dadurch können sie schneller verarbeitet werden und sind etwa für Anwendungen vollkommen transparent. Mit Hardlinks kann man auch spezielle Probleme lösen. Falls z. B. ein Programm zwingend eine Bibliothek benötigt, die eigentlich nicht mehr aktuell ist, kann ein Hardlink die weitere Funktion aufrechterhalten. Er übernimmt den Namen der veralteten (und mittlerweile gelöschten) Bibliothek und leitet auf eine aktuellere Version um.

Wie wird der ln-Befehl in der Praxis verwendet?

In der Folge stellen wir Ihnen einige einfache Anwendungsbeispiele für die Erstellung von Links unter Linux vor. Die Befehlssyntax ist geeignet für wichtige Routineaufgaben, die regelmäßig anfallen. Natürlich lassen sich auch komplexere Verlinkungsaktionen mit dem Linux-ln-Befehl durchführen, was allerdings ein wenig Übung im Umgang mit der Kommandozeile erfordert. Sie müssen dann in der Regel auch komplexeren Code formulieren.

Anlegen eines Hardlinks im gleichen Verzeichnis

In der Standardeinstellung ohne weitere Optionen erstellt der Linux-ln-Befehl feste Verknüpfungen in Form von Hardlinks. Dabei müssen Sie dieses Befehlsformat einhalten:

ln /Zieldatei /Referenz

Mit folgendem Code wird im aktuellen Linux-Benutzerprofil „Peter“ (/home/peter/) ein Hardlink auf eine Videodatei (video.mp4) erstellt. Die Ursprungsdatei und der erzeugte Hardlink liegen im gleichen Verzeichnis für Videos. Der Hardlink kann danach bei Bedarf auch problemlos verschoben werden, ohne seine Gültigkeit zu verlieren.

ln /home/peter/videos/video.mp4 hardlink_zur_videodatei

Anlegen eines Hardlinks in einem anderen Verzeichnis

Soll ein Link auf die Videodatei auf dem Linux-Desktop erzeugt werden, ist diese Syntax zu formulieren:

ln /home/peter/videos/video.mp4 /home/peter/Desktop/hardlink_zur_videodatei

Anlegen eines Softlinks für Dateien

Möchte man einen Softlink mit dem Linux-ln-Befehl erstellen, ist die Syntax mit der Option „-s“ (s = symbolic) zu ergänzen. Das Befehlsformat für einen Softlink lautet:

ln -s /Zieldatei /Referenz

In diesem Beispiel wird der Softlink im gleichen Ordner erzeugt:

ln -s /home/peter/video.mp4 softlink_zur_videodatei 

Softlink in anderen Verzeichnissen anlegen

Sie können Softlinks auch in anderen Verzeichnissen anlegen, z. B. auf dem Schreibtisch:

ln -s /home/peter/videos/video.mp4 /home/peter/Desktop/softlink_zur_videodatei

Eine komplexere Verlinkungsaktion lässt sich mit der Option „-t“ (t = target directory) und weiterem Linux-Code realisieren:

ls Rechnung* | xargs ln -s -t /home/peter/Desktop/

Die Befehlssyntax erstellt Links zu allen Rechnung*-Dateien, die sich im Ausgangsverzeichnis befinden, und legt sie im Desktop-Verzeichnis ab. Der Asterisk (*) sorgt dafür, dass alle Dateien erfasst werden, deren Bezeichnung mit dem Wort „Rechnung“ beginnt (z. B. Rechnung_vom_Januar, Rechnung_vom_Februar etc.).

Wenn sie eine bessere Kontrolle über Verlinkungsaktionen haben möchten und sich zusätzliche Informationen anzeigen lassen wollen, ist die Option „-v“ (v = verbose) eine echte Hilfe. Sie listet den Namen jeder verknüpften Datei am Bildschirm auf, was vor allem bei umfangreicheren Verlinkungsaktionen nützlich ist:

ln -s -v /home/peter/videos/movie.mp4 /home/peter/Desktop/softlink_zur_videodatei

Softlinks können mit dem speziellen Linux-Befehl „rm“ (rm = remove) gelöscht werden. Folgender Code löscht einen Softlink zur Videodatei im aktuellen Arbeitsverzeichnis:

rm softlink_zur_videodatei

Wenn man in einem Durchlauf mehrere Videodateien im aktuellen Arbeitsverzeichnis löschen möchte, werden diese hintereinander und getrennt durch ein Leerzeichen aufgelistet:

rm softlink_Video1 softlink_Video2 softlink_Video3 softlink_Video4

Mit der zusätzlichen Option „-r“ (r = rekursiv) können beispielsweise alle Softlink-Dateien innerhalb eines Softlink-Ordners gelöscht werden. Sollten sich dort noch Unterordner befinden, werden sie ebenfalls gelöscht:

rm -r ~/Desktop/Softlink-Ordner/*

Anlegen eines Softlinks für Verzeichnisse

Folgender Code verlinkt keine Datei, sondern ein Verzeichnis. Ein Softlink für den Video-Ordner wird mit folgender Befehlssyntax auf dem Schreibtisch platziert:

ln -s /home/peter/videos/ /home/peter/Desktop/softlink_für_video-ordner

Sie müssen bei der Erstellung von Links unter Linux nicht immer mit vollständigen Pfadangaben (absolute Pfade) arbeiten. Die Linux-Shell und der Linux-ln-Befehl akzeptieren auch relative Pfadangaben und Shortcuts. Beispielsweise stellt eine Tilde (~) den absoluten Pfad des Home-Verzeichnisses des aktuellen Benutzers dar (in unserem Beispiel: /home/peter/). So sieht der kompakte Code für einen Softlink aus, der auf dem Desktop auf das Verzeichnis für Videos (also: /home/peter/videos/) verweist:

ln -s ~/videos ~/Desktop/softlink_für_video-ordner
Hinweis

Bei einer Verlinkung per Linux-ln-Befehl wird keine Verzeichnisstruktur automatisch mitangelegt. Die adressierten Verzeichnisebenen müssen also alle bereits vorhanden sein (ggf. auch Unterordner, wenn mehrere Verzeichnisebenen relevant sind), ansonsten wird der ln-Befehl nicht fehlerfrei und erfolgreich ausgeführt.

Mehrere Softlinks gleichzeitig in einem Zielverzeichnis anlegen

Man kann auch gleichzeitig auf ein Verzeichnis und eine Datei verlinken. In dem Fall muss die Befehlssyntax nach folgendem Muster aufgebaut werden:

ln <Option> <Verlinkungsobjekt1> < Verlinkungsobjekt2> <Zielverzeichnis mit Softlinks für Verlinkungsobjekte>

Verlinkungsobjekt 1 ist in unserem Beispiel wieder die Filmdatei im Video-Ordner von Peter. Verlinkungsobjekt 2 ist ein Ordner mit der Bezeichnung „Test“, der sich als Unterordner in Peters Video-Verzeichnis befindet. Im Zielverzeichnis „Softlink-Ordner“ sollen Softlinks auf die Videodatei und das Test-Verzeichnis generiert werden:

ln -s ~/videos/video.mp4 ~/videos/test/ ~/Desktop/Softlink-Ordner

Das Zielverzeichnis „Softlink-Ordner“ muss bereits auf dem Desktop vorhanden sein, ansonsten klappt die Verlinkung nicht.

Erstellung von Softlinks mit Backup

Soll der Linux-ln-Befehl eine Sicherheitskopie von Dateien anlegen, die im Zielverzeichnis bereits vorhanden sind (in diesem Beispiel ein gleichnamiger älterer Softlink zur Videodatei), hilft die Kommandozeilenoption „-b“ (b = Backup):

ln -s -b /home/peter/videos/movie.mp4 /home/peter/Desktop/softlink_zur_videodatei

Die erstellte Sicherungsdatei können Sie im Zielverzeichnis an einer Tilde am Namensende erkennen (z. B. softlink_zur_videodatei~). Wenn Sie keine Sicherung brauchen und eine bereits vorhandene ältere Softlink-Datei überschreiben möchten, verwenden Sie die Option „-f“ (f = force):

ln -s -f /home/peter/videos/movie.mp4 /home/peter/Desktop/softlink_zur_videodatei

Eine nützliche Hilfe beim Erstellen von Links unter Linux ist die Option „--help“, die alle verfügbaren Parameter und Optionen für den ln-Befehl auflistet. Fügen Sie „-i“ (i = interactive) hinzu, erfolgt eine Sicherheitsabfrage, ob das Ziel entfernt werden soll.