Hoe maak je symbolische links (Symlinks) in Windows?

Symbolische links (of symlinks) zijn een beetje vreemd, maar ontzettend handig als je ze eenmaal door hebt. Ze zijn als snelkoppelingen naar bestanden of mappen, maar dan ingebouwd in het bestandssysteem, waardoor Windows zich gedraagt ​​alsof het echte links zijn. In de praktijk zie je ze vooral gebruikt worden voor systeemaanpassingen, zoals het verplaatsen van grote mappen naar een andere schijf zonder problemen, of het snel verplaatsen van bestanden op netwerkshares op SMB-servers. Eerlijk gezegd wordt het beheren van complexe configuraties zonder symbolische links een stuk lastiger, omdat Windows het verplaatsen van bestanden niet altijd even soepel afhandelt.

Het lastige eraan? Windows biedt verschillende soorten links aan: harde links, junctions en symbolische links. Elk type heeft zijn eigen eigenaardigheden. Harde links verwijzen naar lokale bestanden, junctions zijn voor mappen (lokaal of op afstand) en symbolische links kunnen beide zijn. Wanneer je naadloze toegang nodig hebt, vooral tussen schijven of netwerken, zijn symbolische links meestal de beste optie. Het aanmaken ervan vereist echter wel wat handigheid via de commandoregel. En natuurlijk heb je beheerdersrechten nodig, tenzij je met groepsbeleid gaat knoeien. Het proces is niet superingewikkeld, maar het is ook niet iets wat je met één klik kunt doen.

Hoe maak je een symbolische link in Windows?

Methode 1: Via de opdrachtprompt (mklink)

Het gebruik van mklink is de meest gebruikelijke manier. Waarom? Omdat het ingebouwd, eenvoudig en flexibel is. Maar er is een klein addertje onder het gras: je moet de opdrachtprompt als beheerder uitvoeren, anders loopt het vast en blokkeert het je. Dit is nogal vervelend, omdat Windows het voor gewone gebruikers natuurlijk onnodig moeilijk maakt om symbolische links aan te maken.

Om een ​​opdrachtprompt met beheerdersrechten te openen, zoek je in het Startmenu naar cmd, klik je er met de rechtermuisknop op en kies je Uitvoeren als beheerder. Eenmaal in de opdrachtprompt is de syntaxis eenvoudig. Om bijvoorbeeld een symbolische link naar Kladblok te maken:

mklink C:\PS\note.exe c:\Windows\System32\notepad.exe

Je ziet dan een bericht als: symbolische link gemaakt voor C:\PS\note.exe <==> c:\Windows\System32\notepad.exe. Nu wordt Kladblok geopend wanneer je note.exe uitvoert, ook al is het slechts een symbolische link. Handig? Jazeker, vooral als je er een dozijn van dit soort links in je workflow gebruikt.

Methode 2: Een symbolische link naar een map maken (met de schakelaar /D)

Het is net zo goed mogelijk om symbolische links voor mappen aan te maken. Bijvoorbeeld om je map Downloads om te leiden:

mklink /D "C:\PS\Downloads" "C:\Users\youruser\Downloads"

Dit maakt het makkelijker om de map Downloads te openen vanaf een aangepaste locatie, zonder alles te hoeven kopiëren. Wanneer je C:\PS\Downloads opent, zie je de inhoud van de echte map Downloads, maar dan via je eigen link. Een beetje zoals een venster naar een andere map.

PowerShell-aanpak

Als je liever met PowerShell werkt, kun je daar ook symbolische links aanmaken. De syntax is iets uitgebreider, maar het werkt wel:

New-Item -ItemType SymbolicLink -Path ".\test\tmpfiles" -Target "..\tmp\files"

Deze methode is handig voor scripting of automatisering, vooral als je dit op een externe machine doet of relatieve paden nodig hebt.

Koppelen aan gedeelde netwerkshares

Wil je een symbolische link maken naar een netwerkmap? Geen probleem. Geef gewoon het UNC-pad op:

mklink /D c:\ps\share \\hq-fs01\Share

Deze truc is perfect voor het centraliseren van toegang tot servers, vooral als meerdere gebruikers of applicaties afhankelijk zijn van gedeelde gegevens. Maar let op: Windows kan externe symbolische links blokkeren, tenzij je bepaalde beleidsregels aanpast.

Om externe symbolische links in te schakelen, controleer je je huidige instelling met:

fsutil behavior query SymlinkEvaluation

Als er staat “externe naar lokale symbolische links zijn uitgeschakeld”, kunt u ze inschakelen door het volgende commando uit te voeren:

fsutil behavior set SymlinkEvaluation R2R:1 fsutil behavior set SymlinkEvaluation R2L:1

Hierna staat Windows symbolische links naar externe bronnen toe, maar houd er rekening mee dat het beveiligingsbeleid van het netwerk sommige van deze links kan blokkeren, afhankelijk van de configuratie. Dat is een beetje vervelend, maar het werkt zodra het is ingesteld.

Hoe vind ik alle symbolische links op een Windows-schijf?

Wil je alle symbolische links op je schijf vinden? Windows maakt dat niet direct duidelijk, maar je kunt een commando gebruiken zoals:

dir /AL /S C:\ | find "SYMLINK"

Deze functie geeft een lijst van alle bestanden met het attribuut “L” en scant ook submappen recursief. Nogmaals, niet ideaal, maar het werkt als je niet wilt verdwalen in een zee van bestanden.

Als je liever PowerShell gebruikt, probeer dan dit:

Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction 'silentlycontinue' | Where { $_. Attributes -match "ReparsePoint"}

Deze opdracht doorzoekt elke map in C:\ en filtert objecten eruit die zijn gemarkeerd met het ReparsePoint -attribuut. Dit attribuut duidt op symbolische links, junctions of mountpoints. Het is vrij eenvoudig als je er eenmaal aan gewend bent, maar houd rekening met enige vertraging als je schijf erg groot is.

Eerlijk gezegd is het beheren van symbolische links niet zo eenvoudig als dubbelklikken op een knop, maar als je het eenmaal doorhebt, wordt het een krachtige manier om dingen te organiseren en te linken zonder blindelings bestanden te dupliceren.

Samenvatting

Het aanmaken van symbolische links wordt eigenlijk te weinig gebruikt en onderschat. In sommige gevallen is het een snelle oplossing, in andere gevallen een redder in nood voor het beheren van schijfruimte of netwerkshares. Vergeet niet dat je beheerdersrechten nodig hebt om deze aan te maken, tenzij je beleidsregels aanpast. En let goed op wat Windows als een “ReparsePoint” beschouwt, anders kan het systeem bepaalde links weigeren.

Samenvatting

  • Gebruik mklink vanuit een opdrachtprompt met beheerdersrechten voor de meeste links.
  • Voeg voor mapkoppelingen het volgende toe:/D
  • PowerShell is handig als je scripts schrijft of er de voorkeur aan geeft.
  • Netwerk-symlinks vereisen dat externe evaluatie is ingeschakeld.
  • dir /AL /SGebruik PowerShell-scripts om symbolische links te vinden.

Tot slot

Het onder de knie krijgen van symbolische links kan een hoop gedoe voorkomen bij het verplaatsen van bestanden of het beheren van complexe mapstructuren. Het is niet superhandig, maar zeker de moeite waard om mee te experimenteren als je met grote datasets of netwerkstations werkt. Ik hoop dat dit een beetje helpt – het werkte in ieder geval voor een paar configuraties die ik heb uitgeprobeerd.