Eerst een korte definitie van termen. Er zijn drie soorten “symlinks” onder Windows.

  • soft links (ook wel symlinks, of symbolische links genoemd)
  • hard links
  • junctions (een soort soft links alleen voor directory’s)

Soft links kunnen worden gemaakt voor bestanden of directory’s.

Hard links kunnen alleen worden gemaakt voor bestanden.

Zowel soft als hard links moeten op hetzelfde volume als het doel worden aangemaakt. U kunt dus niet iets op C: aan iets op D: koppelen.

Verwijderen van links

Hier komt het verschil tussen soft en hard links het duidelijkst naar voren.

Verwijderen van het doel heeft tot gevolg dat soft links niet meer werken. Waar het naar verwijst is weg. Harde links daarentegen zullen blijven werken totdat je de harde link zelf verwijdert. De harde link gedraagt zich net als het originele bestand, omdat het voor alle doeleinden het originele bestand is.

Junctions

Windows heeft ook een ander type link alleen voor directories, genaamd Junctions.

Junctions zien eruit en gedragen zich als soft links. Het belangrijkste verschil is dat je hiermee directories kunt koppelen die zich op verschillende lokale volumes bevinden (maar wel op dezelfde computer). U kunt geen koppeling maken naar een netwerklocatie.

Maak gebruik van MKLINK

Maak een soft link naar een directory.

Maak een junction link naar een directory.

Maak een soft link naar een bestand.

Een hard-link naar een bestand maken.

Zo zien ze eruit.

Note voor PowerShell gebruikers:
MKLINK is geen executable die je gewoon vanuit PowerShell kunt aanroepen. U moet het via de opdrachtprompt aanroepen.

cmd /c mklink /D symlink_dir real_dir

Aternatief kunt u deze module gebruiken die ik heb geschreven en die native PowerShell-wrappers voor MKLINK bevat.

Lees over MSLINK op MSDN.

Gebruik FSUTIL

FSUTIL is een andere manier om hardlinks (maar geen softlinks) te maken. Dit is hetzelfde als mklink /H.

Lees over FSUTIL op MSDN.

Gebruik Junction

Junction is een tool van Sysinternals en biedt een andere manier om junctions te maken. Hetzelfde als mklink /J. Het heeft ook enkele andere gereedschappen voor het werken met junctions die ik hier niet zal behandelen.