Symlinks – Was sind symbolische Links

Bei einem aktuellen Projekt bin ich auf ein außergewöhnliches deployment gestoßen. Außergewöhnlich aber nicht negativ wertend gemeint. Halt nicht “state of the art”. Stack: Amazon EC2 Server mit einem NGINX Webserver. Der Ablauf ist wie folgt. Der Order html unter dem Pfad /usr/share/nginx/html war ein Symlink auf ein Verzeichnis im selben Pfad. Nennen wir den Ordner usr/share/nginx/kundenwebsite-2022-01-11 .

Ich nahm an das der frühere Entwickler von seiner lokalen Machine die Dateien via scp hochgespielt hatte und dann den Symlink angepasst hat. Kann man machen aber ich finde das birgt eine Menge an Risikopotenzial. Außerdem kommt man eher selten in die Verlegenheit Symlinks selber zu setzen. Heißt man muss sich immer wieder einlesen. Aus diesem Grund schreibe ich diesen Artikel. Es soll ein kleines How To Symlink sein.

Ein Symlink wird gesetzt mit: ln -s /absoluter/pfad/zum/ziel /absoluter/pfad/der/verknüpfung

Im Kontext zum obigen Beispiel beduetet es: ln -s usr/share/nginx/kundenwebsite-2022-01-11 usr/share/nginx/html

Erklärung: Wer jetzt auf usr/share/nginx/ ein ls -la macht wird folgende Ausgabe erhalten: html -> kundenwebsite-2022-01-11

drwxr-xr-x  1 nginx  nginx    50 26. Jan 11:22 html -> kundenwebsite-2022-01-11
drwxr-xr-x  5 nginx nginx 4096 31. Aug 2021  kundenwebsite-2022-01-11

Heißt das der Symlink erfolgreich gesetzt ist und html eine Referenz auf den kundenwebsite-2022-01-11 Ordner enthält.

Wenn man nun ein Feature eingebaut hat und es im März auf den sever schiebt, passt man den Symlink wie folgt an:

ln -sfn $PWD/kundenwebsite-2022-03-01 $PWD/html

Somit wird die alte Referenez überschrieben.

Wenn man dann die Schnauze voll hat von so einem Deployment löscht man den Symlink ganz easy mit: rm $PWD/html .

Bemerkung: $PWD gibt der den aktuellen Standpunkt deines aufenhalts im Verzeichnissystem wieder. Also achte beim ausführen mit der Systemvariable $PWD wo du gerade bist. Du musst in unserem beispiel hier sein: ln -sfn $PWD/src2/ $PWD/target/Daten.

Hoffe es hat geholfen das Wissen über Symlinks etwas aufzufrischen?


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


Count files via the CLI in a folder (also recursive)

December 5, 2022

For example, you want to know how many files are in your Laravel vendor folder. To do this, go to the project folder with your console. Now you can count the files with find. If you don’t want a recursion and just want to know how many folders and files a certain path has, you […]

Odt Dateien in ein PDF konvertieren

January 4, 2022

Möchte man über die Commandline aus einer odt Datei eine PDF machen, brinbt libre Office von Hause auch gleich ein Headless Tool mit. libreoffice –headless –convert-to pdf textdatei.odt und schubdiwup, da ist das neue PDF.

Mit sed Text in einer Datei ändern

November 20, 2021

Wer über die CLI in einer Textdatei etwas editieren möchte greift für gewöhnlich zu nano, vim etc. Aber es gibt auch eine andere Möglichkeit in einer Textdatei etwas zu ändern. Über eine Stream (Stream Edit). Das kann zum Beispiel bei einem Deploymentscript sinnvoll sein. Wenn man zum Beispiel ein Deploymentscript hat und mit Release Ordner […]

Verschlüsseltes Zip über die Kommandozeile erstellen

November 9, 2021

Folgendes Szenario. Ihr seid via SSH auf einem Server der nicht mehr ansprechbar ist. Um die Dateien zu sichern erstellt ihr rasch ein ZIP von den Dateien die gesichert werden müssen. Das geht schnell mit: zip -re outputfileName.zip input folder/file r = rekursive = encryption

What does the -p option stand for in mkdir?

November 4, 2021

If you want to create several directories with the command mkdir you use the -p option. But what does the -p stand for? One could assume it stands for “Path”. But no. It stands for “parent”. And the flag is needed to create a parent directory if it is required. If you try to create […]

Wofür steht das -p option bei mkdir?

November 4, 2021

Wenn man mit mkdir mehrere Verzeichnis mit Unterverzeichnis anlegen möchte benutzt man die -p Option. Aber wofür steht das -p eigentlich? Man könnte annehmen für “Path”. Es steht für “Parent”. Und der Flag ist erforedlich um ein Übergeordnetes Verzeichnis anzulegen, wenn es erforderlich ist. Wenn man ohne p Option versucht ein Parent und ein Child […]