Symbolische Links und die Schwächen von „Hard“-Links

Hier wenden wir uns einem oft (sogar unter UNIX®-Anwendern) vorkommenden Missverständnis zu, das hauptsächlich dadurch entsteht, dass Links so wie wir sie bisher kennen lernten (fälschlicherweise „Hard“ Links genannt) nur mit normalen Dateien verknüpft waren (wir haben aber auch gesehen, dass das nicht der Fall ist – sogar symbolische Links sind „verknüpft“). Zuerst müssen wir jedoch erklären, was eigentlich symbolische Links („Soft“ Links oder auch „Symlinks“) sind.

Symbolische Links sind Dateien eines speziellen Typs, deren einziger Inhalt eine beliebige Zeichenkette ist, die vom System als Pfad zur eigentlichen Datei interprretiert werden. Diese muss nicht notwendigerweise existieren. Wenn Sie in der Kommandozeile oder in einem Programm einen symbolischen Link verwenden, so benutzen Sie in Wirklichkeit die damit verknüpfte Datei, falls sie existiert. Ein Beispiel:

$ echo Hallo >myfile
$ ln -s myfile mylink
$ ls -il
total 4
    169 -rw-rw-r--    1 franz     franz            6 Dec 10 21:30 myfile
    416 lrwxrwxrwx    1 franz     franz            6 Dec 10 21:30 mylink 
-> myfile
$ cat myfile
Hallo
$ cat mylink
Hallo

Sie sehen, dass der Dateityp von mylink ein l, also ein symbolischer Link ist. Die Zugriffsrechte für symbolische Links sind uninteressant: sie sind immer rwxrwxrwx. Sie können ebenfalls feststellen, dass der Link wirklich eine andere Datei als myfile ist, da die Inode-Nummern differieren. Der Link verweist aber symbolisch auf die Datei, also geben Sie bei dem Befehl cat mylink in Wirklichkeit den Inhalt der Datei myfile aus. Zur Anschauung, dass ein symbolischer Link eine beliebige Zeichenkette enthalten kann, geben Sie folgendes ein:

$ ln -s "Ich bin keine existierende Datei" anotherlink
$ ls -il anotherlink
    418 lrwxrwxrwx    1 franz     franz           20 Dec 10 21:43 anotherlink 
-> Ich bin keine existierende Datei
$ cat anotherlink
cat: anotherlink: No such file or directory
$

Symbolische Links existieren, um verschiedene Schwachpunkte der normalen („Hard“) Links zu vermeiden:

Symbolische Links sind daher bei vielen Gelegenheiten nützlich und zahlreiche Anwender tendieren dazu, Symlinks zu verwenden obwohl bei manchen Situationen auch normale Links funktionieren würden. Ein Vorteil der normalen Links ist jedoch, dass eine Datei nicht verloren geht, wenn der Originallink gelöscht wird.

Schließlich und endlich noch eine Bemerkung zur Größe eines Links: Sie haben vermutlich bemerkt, dass die Größe eines sybolischen Links der Größe der enthaltenen Zeichenfolge entspricht.