2011-10-05 03:28:14 +0000 2011-10-05 03:28:14 +0000
412
412

"directory junction" vs "directory symbolic link"?

In het kader van NTFS:

MKLINK [[/D] | [/H] | [/J]] Link Target

/D Creëert een directory symbolic link. Standaard is een symbolische link naar een bestand. /H Maakt een harde link in plaats van een symbolische link. /J Maakt een Directory Junction. Link Specificeert de nieuwe symbolische link naam.
Target specificeert het pad (relatief of absoluut) waar de nieuwe link naar verwijst.

  1. Is een directory junction niet precies hetzelfde als een directory symbolic link?

    1. Aangezien een “directory” eigenlijk slechts een bestand is, wat zou dan het verschil zijn tussen een symbolische link naar een directory en een symbolische link naar een bestand?

Antwoorden (3)

382
382
382
2011-10-05 03:43:56 +0000

Een kruising is zeker niet hetzelfde als een symbolische link in een directory, hoewel ze zich wel op dezelfde manier gedragen. Het belangrijkste verschil is dat, als je kijkt naar een externe server, juncties worden verwerkt op de server en directory symbolische links worden verwerkt op de client. Zie ook Matthew’s commentaar op het feit dat dit betekent dat symbolische links op het lokale bestandssysteem kunnen wijzen naar bestandssystemen op afstand.

Stel dat je op een machine met de naam Alice een junction point c:\myjp en een directory symbolische link c:\mysymlink zou plaatsen, beide wijzen naar c:\targetfolder. Terwijl u Alice gebruikt zult u niet veel verschil merken tussen deze twee. Maar als je een andere machine met de naam Bob gebruikt, dan zal het knooppunt

\Alice\c$\myjp naar \Alice\c$\targetfolder

wijzen, maar de symbolische link

\Alice\c$\mysymlink zal naar \Bob\c$\targetfolder

wijzen (Let op: standaard volgt het systeem geen symlinks op externe volumes, dus in de meeste gevallen resulteert het tweede voorbeeld in “Bestand niet gevonden” of “De symbolische link kan niet worden gevolgd omdat het type ervan is uitgeschakeld. ”)

Het verschil tussen een symbolische link naar een map en een symbolische link naar een bestand is eenvoudigweg dat men een map en een bestand vertegenwoordigt. Aangezien het doel van de link niet hoeft te bestaan wanneer de link wordt gemaakt, moet het bestandssysteem weten of het applicaties moet vertellen dat het een directory is of niet.

Het moet ook worden opgemerkt dat het maken van een symbolische link speciale privileges vereist (standaard alleen beschikbaar voor verhoogde processen), terwijl het maken van een kruising alleen toegang tot het bestandssysteem vereist.

65
65
65
2015-10-22 19:03:16 +0000

Complexe praatjes doen pijn aan de hersenen – Ik hou van grafieken:

Neem aan dat elke MyLink een symbolische link is en elke MyJunc een kruising is die naar Target as created wijst.

bijv.

mklink /D MyLink C:\T_Dir voor het creëren van een symbolische link naar de doelmap

mklink /J MyJunc C:\T_Dir voor het creëren van een directory kruising naar de doelmap

Waar de syntaxis mklink [/J,/D] [link path] [target path] is zoals getypt op de lokale machine

  • *
link path | target path | When accessed ..
              | | (locally) | (remotely)
              | | |
C:\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
C:\MyJunc | C:\T_Dir | C:\T_Dir | [leads to remote]
              | |
\Svr\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
\Svr\MyJunc | C:\T_Dir | ***Must create and point local***
              | |
C:\MyLink | \Sv2\T_Dir | \Sv2\T_Dir | Error*1
C:\MyJunc | \Sv2\T_Dir | ***Error - Must point local***
              | |
\Svr\MyLink | \Sv2\T_Dir | Error*1
\Svr\MyJunc | \Sv2\T_Dir | ***Must create link using target device***

Error*1 - Als u de toegang tot symbolische links op afstand op uw lokale machine heeft gedeblokkeerd, dan zou dit werken … maar alleen op de lokale machine waar het is gedeblokkeerd.

55
55
55
2018-02-02 16:30:06 +0000

Symbolische koppelingen hebben meer functionaliteit, terwijl knooppunten bijna een erfenis lijken te zijn vanwege hun beperkingen, maar de veiligheidsimplicaties van deze beperkingen zijn specifiek de reden waarom een knooppunt de voorkeur zou kunnen krijgen boven een symbolische koppeling. Remote targeting maakt symbolische koppelingen functioneler, maar verhoogt ook hun veiligheidsprofiel, terwijl knooppunten als veiliger kunnen worden beschouwd omdat ze beperkt zijn tot lokale paden. Dus, als je een lokale link wilt en met een absoluut pad kunt leven, ben je waarschijnlijk beter af met een kruising; overweeg anders een symbolische link voor de toegevoegde mogelijkheden.

***De verklaring van verschil in snelheid/complexiteit komt uit een niet geverifieerde verklaring in de Wikipedia-item over NTFS reparse points (een goede lectuur). * Hier zijn enkele andere vergelijkingen over het onderwerp, maar deze kunnen misleidend zijn bij het overwegen van kruispunten, omdat ze de voordelen die ik hierboven opsomde niet vermelden. Genomen vanaf hier (een goede inleiding)

Vanaf SS64 pagina op MKLink

  • *

Commentaar over Terminologie

Koppelingen zijn Symbolische Links

Kruisingen en Symbolische Links doen eigenlijk hetzelfde op dezelfde manier (repareren van punten), afgezien van de bovengenoemde verschillen in de manier waarop ze worden verwerkt. In feite is een Junction technisch gezien een symbolische link, en soms kan documentatie een Junction een symbolische link noemen, zoals hier het geval is . Dus, dat is gewoon iets om op de hoogte te zijn van de terminologie.

NTFS

Hoewel het OP dit specificeert, is het de moeite waard om erop te wijzen dat “symbolische link” een zeer algemene term is die niet specifiek is voor NTFS. Dus, om specifiek te zijn, gaat deze vergelijking over NTFS Junctions vs. NTFS Symbolic Links.