web2 logo

Symbolische links en hardlinks

Er zijn 2 soorten links, harde links en zachte links. Zachte links (softlinks) worden symbolische links genoemd, vaak ingekort tot symlinks. Een hardlink verwijst rechtreeks naar een plek in het bestandsysteem, de inode. Een symlink is een verwijzing naar een bestand of directory. Symlinks worden meer gebruikt als hardlinks, bij het gebruik van ln om links te maken zijn hardlinks echter de default, je moet de optie -s gebruiken om een symlink te maken.
Symlinks lijken op de snelkoppelingen die je in Windows ook tegenkomt, ze verwijzen naar een bestand of map. Als dit bestand of deze map wordt verwijdert hou je een symlink over die ongeldig is.
Hardlinks verwijzen naar een inode en zijn daarmee een andere naam voor het bestand of de map. Als het oorspronkelijke bestand of de oorspronkelijke map wordt verwijderd, wordt in feite alleen de oorspronkelijke naam verwijderd, het bestand of de map bestaat dan nog steeds, maar nu alleen met de naam van de hard link, totdat de laatste hard link die verwijst naar die inode ook wordt verwijderd. Je kunt niet zonder meer een hard link naar een map aanmaken, je moet daarvoor root zijn en de -d optie gebruiken.

Softlink aanmaken

ln maakt een link naar een bestand of map.
$ ln -s doel_van_de_symlink naam_voor_de_symlink
doel_van_de_symlink = waar de link naar toe moet verwijzen, deze moet al bestaan.
naam_voor_de_symlink = de symlink die met deze opdracht zal worden aangemaakt.
Een hardlink aanmaken:
$ ln doel_van_de_hardlink naam_voor_de_hardlink

Een softlink aanmaken naar een map op een andere locatie. In dit voorbeeld bestaat de directory /var/www/html en gaat dat verwijzen naar /home/kees/www.
Eerst het origineel hernoemen van html naar html2 zodat het origineel ook bewaard blijft:
cd /var/www sudo mv html html2 sudo ln -s /home/kees/www html
(html is in dit geval een directory)

Symbolische links opvragen

Er is geen standaardcommando om symbolische links op te vragen, maar de directory-entries van symbolische links beginnen met een 'l' (dat is de letter l van Leo), dus je kan het volgende gebruiken:
ls -lrt | grep '^l'
Je krijgt dan een lijst met uitsluitend symbolische links, bijvoorbeeld:
lrwxrwxrwx 1 root root 16 okt 24 2018 html -> /home/kees/www
De link 'html' verwijst hier naar de map '/home/kees/www'.

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ linux ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.