Mit der Kom­man­do­zei­le von Linux sind Links schnell erstellt. Der dafür benötigte ln-Befehl ist relativ leicht an­zu­wen­den; man benötigt für viele An­wen­dungs­rou­ti­nen nur relativ wenig Code. Wer gezielt und effizient verlinken möchte, sollte al­ler­dings den Un­ter­schied zwischen Hard- und Softlinks kennen. Wir erläutern, wofür die jeweilige Link-Variante besonders geeignet ist. Außerdem zeigen unsere An­wen­dungs­bei­spie­le, welcher Code für Ver­lin­kun­gen unter Linux notwendig ist.

Was ist der Linux-ln-Befehl?

Mit dem Linux-ln-Befehl (ln ist die Abkürzung für den eng­li­schen Begriff Link) werden Ver­knüp­fun­gen auf eine Datei oder ein Ver­zeich­nis erzeugt. Zur Eingabe nutzt man die Kom­man­do­zei­le von Linux (auch Shell genannt), die über ein Terminal-Fenster geöffnet und bedient wird. Unter Linux zählt der ln-Befehl zu den wich­tigs­ten und am häu­figs­ten ver­wen­de­ten Linux-Terminal-Kommandos. Mit dem Kom­man­do­zei­len­be­fehl 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 Un­ter­schied zwischen Soft- und Hardlinks kennen: Softlinks sind Quer­ver­wei­se, die eine Ur­sprungs­da­tei über einen Ver­weis­pfad adres­sie­ren. Ver­schiebt oder löscht man die Ori­gi­nal­da­tei, gibt es kein Ziel­ob­jekt mehr und der Wegweiser läuft ins Leere. Löscht man hingegen den Softlink, bleibt die Ori­gi­nal­da­tei erhalten; es wird ja nur der Verweis auf diese Datei entfernt. Softlinks werden auch sym­bo­li­sche Links oder (abgekürzt) Symlinks genannt. Softlinks können nicht nur mit dem ln-Befehl im Linux-Terminal, sondern auch mit Funk­tio­nen der gra­fi­schen Be­nut­zer­ober­flä­che, etwa im Da­tei­ma­na­ger von Linux, erstellt werden. Auf der gra­fi­schen Be­nut­zer­ober­flä­che von Linux erkennt man einen Softlink an einem Pfeil­sym­bol, das zu­sätz­lich auf dem Icon der Datei platziert ist.

Hardlinks können nur auf der Kom­man­do­zei­le erzeugt werden. Sie sind weit­rei­chen­der als Softlinks in die Spei­cher­ver­wal­tung eines Be­triebs­sys­tems und das jeweils ver­wen­de­te Da­tei­sys­tem in­te­griert. Ein Hardlink ist ein zu­sätz­li­cher Ver­zeich­nis­ein­trag für eine Ori­gi­nal­da­tei, wobei auch mehrere harte Links auf dieselbe Datei verweisen können. Letztlich un­ter­schei­det Linux technisch und operativ nicht zwischen Original bzw. Ori­gi­nal­l­ink (Pri­mär­link) und einem später ge­ne­rier­ten Hardlink (Folge- und Se­kun­där­link). Daher sind auch alle Ver­zeich­nis­ein­trä­ge gleich­be­rech­tigt und funk­tio­nie­ren un­ab­hän­gig von­ein­an­der. Durch einen Hardlink kann der Zugriff auf eine Datei an ver­schie­de­nen Orten er­mög­licht werden, was etwa häufig für Backups genutzt wird.

Die Be­son­der­hei­ten und die Funk­ti­ons­wei­se von Hardlinks kann man am besten an einem konkreten Beispiel erklären. Eine Vi­deo­da­tei, die zunächst nur im Ver­zeich­nis „Meine Videos“ zu­gäng­lich ist, kann nach Anlegen eines Hardlinks auch über das Ver­zeich­nis „Meine Videos-Backup“ abgerufen werden. Löscht man nun die Ori­gi­nal­da­tei in „Meine Videos“ (streng genommen wird nur der primäre Verweis auf die Vi­deo­da­tei gelöscht), ist sie über den gleich­wer­ti­gen Par­al­lel­zu­gang (Hardlink-Pfad zur Datei im Ver­zeich­nis „Meine Videos-Backup“) immer noch pro­blem­los er­reich­bar. Dabei haben Hardlinks den Vorteil, dass ein zu­sätz­li­cher Vermerk in der Spei­cher­ver­wal­tung nicht den doppelten Spei­cher­platz in Anspruch nimmt. Sie sind lediglich al­ter­na­ti­ve Zu­gangs­op­tio­nen (via Dateipfad) und re­prä­sen­tie­ren keine komplette zweite physische Kopie einer Datei.

Hardlinks sind unter Linux eng mit einer spe­zi­el­len internen Buch­füh­rung verknüpft. Jeder Hardlink verweist auf einen so­ge­nann­ten Inode und wird einer un­ver­wech­sel­ba­ren und ein­deu­ti­gen Inode-Nummer zu­ge­ord­net, die ebenfalls der Ori­gi­nal­da­tei zu­ge­wie­sen ist. Eine Datei wird erst endgültig in der Inode-Ver­wal­tung und damit auch im System gelöscht, wenn alle Einträge (also sämtliche Verweise auf diese Datei) durch Lösch­ope­ra­tio­nen für ungültig erklärt wurden und ein interner Link-Zähler auf null gesetzt wurde. Wird nur ein Adress­ein­trag von mehreren gelöscht oder die Ori­gi­nal­da­tei in ein anderes Ver­zeich­nis ver­scho­ben, ändert sich hingegen nichts. Die ver­blie­be­nen und im Inode hin­ter­leg­ten Optionen für einen Zugriff auf die Ori­gi­nal­da­tei sind weiterhin gültig.

Fakt

Inodes sind de­fi­nier­te Da­ten­struk­tu­ren, die eine Datei eindeutig be­schrei­ben, Metadaten-In­for­ma­tio­nen über diese be­inhal­ten (Grup­pen­zu­ge­hö­rig­keit, Ei­gen­tü­mer, Zu­griffs­rech­te etc.) und ihren Spei­cher­ort (in Form einer Spei­cher­adres­se) do­ku­men­tie­ren.

Wofür eignen sich Hard- und Softlinks?

Mit Softlinks können Nor­mal­nut­zer die meisten üblichen Ver­lin­kun­gen erledigen. Man kann Dateien und Ver­zeich­nis­se auch über Da­tei­sys­tem­gren­zen hinweg verlinken, auch ver­schie­de­ne Fest­plat­ten und Par­ti­tio­nen stellen kein Hindernis dar. Softlinks sind al­ler­dings nicht so flexibel wie Hardlinks, wenn Än­de­run­gen am Re­fe­renz­ob­jekt vor­ge­nom­men werden (Ver­schie­ben, Löschen).

Hardlinks können nor­ma­ler­wei­se nur Dateien verlinken, keine Ver­zeich­nis­se bzw. Ordner. Da die mit Hardlinks ver­knüpf­ten Inode-Nummern nur innerhalb von Par­ti­tio­nen verwaltet werden können, sind nur par­ti­ti­ons­in­ter­ne Ver­lin­kun­gen möglich. Moderne Linux-Systeme enthalten aber häufig ver­schie­de­ne Da­tei­sys­te­me, die sich auf un­ter­schied­li­chen Fest­plat­ten und Par­ti­tio­nen befinden. Wer bei der Er­stel­lung von Links unter Linux gezielt mit Hardlinks arbeitet, sollte also sein System kennen und über ein gewisses Grund­wis­sen verfügen (etwa in den Bereichen Par­ti­tio­nie­rung, For­ma­tie­rung).

Dennoch gibt es vor allem bei Backups einige Vorteile. Man erhält al­ter­na­ti­ve Zugriffe auf das Original, die platz­spa­rend sind und zugleich die Da­ten­si­cher­heit erhöhen. Diese positiven Ei­gen­schaf­ten der Ver­lin­kungs­tech­nik nutzt etwa die Software Hard­link­Back­up.

Da Hardlinks die Ur­sprungs­da­tei direkt re­prä­sen­tie­ren, müssen sie im Gegensatz zu Softlinks nicht durch Re­chen­pro­zes­se de­re­fe­ren­ziert werden. Dadurch können sie schneller ver­ar­bei­tet werden und sind etwa für An­wen­dun­gen voll­kom­men trans­pa­rent. Mit Hardlinks kann man auch spezielle Probleme lösen. Falls z. B. ein Programm zwingend eine Bi­blio­thek benötigt, die ei­gent­lich nicht mehr aktuell ist, kann ein Hardlink die weitere Funktion auf­recht­erhal­ten. Er übernimmt den Namen der ver­al­te­ten (und mitt­ler­wei­le ge­lösch­ten) Bi­blio­thek und leitet auf eine ak­tu­el­le­re Version um.

Wie wird der ln-Befehl in der Praxis verwendet?

In der Folge stellen wir Ihnen einige einfache An­wen­dungs­bei­spie­le für die Er­stel­lung von Links unter Linux vor. Die Be­fehls­syn­tax ist geeignet für wichtige Rou­ti­ne­auf­ga­ben, die re­gel­mä­ßig anfallen. Natürlich lassen sich auch kom­ple­xe­re Ver­lin­kungs­ak­tio­nen mit dem Linux-ln-Befehl durch­füh­ren, was al­ler­dings ein wenig Übung im Umgang mit der Kom­man­do­zei­le erfordert. Sie müssen dann in der Regel auch kom­ple­xe­ren Code for­mu­lie­ren.

Anlegen eines Hardlinks im gleichen Ver­zeich­nis

In der Stan­dard­ein­stel­lung ohne weitere Optionen erstellt der Linux-ln-Befehl feste Ver­knüp­fun­gen in Form von Hardlinks. Dabei müssen Sie dieses Be­fehls­for­mat einhalten:

ln /Zieldatei /Referenz

Mit folgendem Code wird im aktuellen Linux-Be­nut­zer­pro­fil „Peter“ (/home/peter/) ein Hardlink auf eine Vi­deo­da­tei (video.mp4) erstellt. Die Ur­sprungs­da­tei und der erzeugte Hardlink liegen im gleichen Ver­zeich­nis für Videos. Der Hardlink kann danach bei Bedarf auch pro­blem­los ver­scho­ben werden, ohne seine Gül­tig­keit zu verlieren.

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

Anlegen eines Hardlinks in einem anderen Ver­zeich­nis

Soll ein Link auf die Vi­deo­da­tei auf dem Linux-Desktop erzeugt werden, ist diese Syntax zu for­mu­lie­ren:

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 Be­fehls­for­mat 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 Ver­zeich­nis­sen anlegen

Sie können Softlinks auch in anderen Ver­zeich­nis­sen anlegen, z. B. auf dem Schreib­tisch:

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

Eine kom­ple­xe­re Ver­lin­kungs­ak­ti­on lässt sich mit der Option „-t“ (t = target directory) und weiterem Linux-Code rea­li­sie­ren:

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

Die Be­fehls­syn­tax erstellt Links zu allen Rechnung*-Dateien, die sich im Aus­gangs­ver­zeich­nis befinden, und legt sie im Desktop-Ver­zeich­nis ab. Der Asterisk (*) sorgt dafür, dass alle Dateien erfasst werden, deren Be­zeich­nung mit dem Wort „Rechnung“ beginnt (z. B. Rechnung_vom_Januar, Rechnung_vom_Februar etc.).

Wenn sie eine bessere Kontrolle über Ver­lin­kungs­ak­tio­nen haben möchten und sich zu­sätz­li­che In­for­ma­tio­nen anzeigen lassen wollen, ist die Option „-v“ (v = verbose) eine echte Hilfe. Sie listet den Namen jeder ver­knüpf­ten Datei am Bild­schirm auf, was vor allem bei um­fang­rei­che­ren Ver­lin­kungs­ak­tio­nen nützlich ist:

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

Softlinks können mit dem spe­zi­el­len Linux-Befehl „rm“ (rm = remove) gelöscht werden. Folgender Code löscht einen Softlink zur Vi­deo­da­tei im aktuellen Ar­beits­ver­zeich­nis:

rm softlink_zur_videodatei

Wenn man in einem Durchlauf mehrere Vi­deo­da­tei­en im aktuellen Ar­beits­ver­zeich­nis löschen möchte, werden diese hin­ter­ein­an­der und getrennt durch ein Leer­zei­chen auf­ge­lis­tet:

rm softlink_Video1 softlink_Video2 softlink_Video3 softlink_Video4

Mit der zu­sätz­li­chen Option „-r“ (r = rekursiv) können bei­spiels­wei­se alle Softlink-Dateien innerhalb eines Softlink-Ordners gelöscht werden. Sollten sich dort noch Un­ter­ord­ner befinden, werden sie ebenfalls gelöscht:

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

Anlegen eines Softlinks für Ver­zeich­nis­se

Folgender Code verlinkt keine Datei, sondern ein Ver­zeich­nis. Ein Softlink für den Video-Ordner wird mit folgender Be­fehls­syn­tax auf dem Schreib­tisch platziert:

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

Sie müssen bei der Er­stel­lung von Links unter Linux nicht immer mit voll­stän­di­gen Pfad­an­ga­ben (absolute Pfade) arbeiten. Die Linux-Shell und der Linux-ln-Befehl ak­zep­tie­ren auch relative Pfad­an­ga­ben und Shortcuts. Bei­spiels­wei­se stellt eine Tilde (~) den absoluten Pfad des Home-Ver­zeich­nis­ses 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 Ver­zeich­nis für Videos (also: /home/peter/videos/) verweist:

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

Bei einer Ver­lin­kung per Linux-ln-Befehl wird keine Ver­zeich­nis­struk­tur au­to­ma­tisch mit­an­ge­legt. Die adres­sier­ten Ver­zeich­nis­ebe­nen müssen also alle bereits vorhanden sein (ggf. auch Un­ter­ord­ner, wenn mehrere Ver­zeich­nis­ebe­nen relevant sind), ansonsten wird der ln-Befehl nicht feh­ler­frei und er­folg­reich aus­ge­führt.

Mehrere Softlinks gleich­zei­tig in einem Ziel­ver­zeich­nis anlegen

Man kann auch gleich­zei­tig auf ein Ver­zeich­nis und eine Datei verlinken. In dem Fall muss die Be­fehls­syn­tax nach folgendem Muster aufgebaut werden:

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

Ver­lin­kungs­ob­jekt 1 ist in unserem Beispiel wieder die Filmdatei im Video-Ordner von Peter. Ver­lin­kungs­ob­jekt 2 ist ein Ordner mit der Be­zeich­nung „Test“, der sich als Un­ter­ord­ner in Peters Video-Ver­zeich­nis befindet. Im Ziel­ver­zeich­nis „Softlink-Ordner“ sollen Softlinks auf die Vi­deo­da­tei und das Test-Ver­zeich­nis generiert werden:

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

Das Ziel­ver­zeich­nis „Softlink-Ordner“ muss bereits auf dem Desktop vorhanden sein, ansonsten klappt die Ver­lin­kung nicht.

Er­stel­lung von Softlinks mit Backup

Soll der Linux-ln-Befehl eine Si­cher­heits­ko­pie von Dateien anlegen, die im Ziel­ver­zeich­nis bereits vorhanden sind (in diesem Beispiel ein gleich­na­mi­ger älterer Softlink zur Vi­deo­da­tei), hilft die Kom­man­do­zei­len­op­ti­on „-b“ (b = Backup):

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

Die erstellte Si­che­rungs­da­tei können Sie im Ziel­ver­zeich­nis an einer Tilde am Na­mens­en­de erkennen (z. B. softlink_zur_vi­deo­da­tei~). Wenn Sie keine Sicherung brauchen und eine bereits vor­han­de­ne ältere Softlink-Datei über­schrei­ben 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 ver­füg­ba­ren Parameter und Optionen für den ln-Befehl auflistet. Fügen Sie „-i“ (i = in­ter­ac­ti­ve) hinzu, erfolgt eine Si­cher­heits­ab­fra­ge, ob das Ziel entfernt werden soll.

Zum Hauptmenü