web-dev-qa-db-fra.com

"jonction d'annuaire" vs "lien symbolique d'annuaire"?

Dans le contexte de NTFS:

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

/D Crée un lien symbolique dans un répertoire. La valeur par défaut est un lien symbolique de fichier.
/H Crée un lien fixe au lieu d'un lien symbolique.
/J Crée une jonction d'annuaire.
Link spécifie le nouveau nom du lien symbolique.
Target spécifie le chemin (relatif ou absolu) auquel le nouveau lien fait référence.

  1. Un jonction d'annuaire _ n'est-il pas exactement la même chose qu'un lien symbolique d'annuaire?

    Quelle est la différence entre mklink /D f1 f2 et mklink /J f1 f2?

  2. Puisqu'un "répertoire" est en réalité juste un fichier , quelle serait la différence entre un lien symbolique de répertoire et un lien symbolique de fichier?

374
Pacerier

Une jonction n’est certainement pas la même chose qu’un lien symbolique d’annuaire, bien qu’ils se comportent de la même manière. La principale différence est que, si vous recherchez un serveur distant, les jonctions sont traitées au niveau des répertoires serveur et au niveau du client . Voir également le commentaire de Matthew sur le fait que cela signifie que les liens symboliques sur le système de fichiers local peuvent pointer vers des systèmes de fichiers distants.

Supposons que sur une machine nommée Alice, vous deviez placer un point de jonction c:\myjp et un lien symbolique de répertoire c:\mysymlink, les deux pointant vers c:\targetfolder. Pendant que vous utilisez Alice, vous ne remarquerez pas beaucoup de différence entre eux. Mais si vous utilisez une autre machine nommée Bob, le point de jonction

\\Alice\c$\myjp désignera \\Alice\c$\targetfolder

mais le lien symbolique

\\Alice\c$\mysymlink désignera \\Bob\c$\targetfolder

(Avertissement: par défaut, le système ne suit pas les liens symboliques sur les volumes distants. Ainsi, dans la plupart des cas, le deuxième exemple aboutira à "Fichier introuvable" _ ou "Le lien symbolique ne peut pas être suivi parce que son type est désactivé. ")

La différence entre un lien symbolique de répertoire et un lien symbolique de fichier est simplement que l'un représente un répertoire et l'autre un fichier. Étant donné que la cible du lien n'a pas besoin d'exister lors de la création du lien, le système de fichiers doit savoir s'il faut indiquer aux applications qu'il s'agit ou non d'un répertoire.

Il convient également de noter que la création d'un lien symbolique nécessite des privilèges spéciaux (par défaut, disponible uniquement pour les processus élevés), tandis que la création d'une jonction requiert uniquement un accès au système de fichiers.

351
Harry Johnston

Les conversations complexes font mal au cerveau - j'aime les graphiques:

Supposons que toute MyLink soit un lien symbolique et que MyJunc soit une jonction pointant sur Target as created.

par exemple.

mklink /D MyLink C:\T_Dir pour créer un lien symbolique vers le répertoire cible

mklink /J MyJunc C:\T_Dir pour créer une jonction de répertoire dans le répertoire cible

Où la syntaxe est mklink [/J,/D] [link path] [target path] telle que saisie sur la machine locale


 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 - Si vous avez débloqué l'accès aux liens symboliques distants sur votre ordinateur local, cela fonctionnerait .. mais uniquement sur l'ordinateur local où il est débloqué

52
Still.Tony

Les liens symboliques ont plus de fonctionnalités, alors que les jonctions semblent presque être une fonctionnalité héritée en raison de leurs limitations, mais les implications de ces limitations pour la sécurité expliquent précisément pourquoi une jonction pourrait être préférée à un lien symbolique. Le ciblage à distance rend les liens symboliques plus fonctionnels, mais augmente également leur profil de sécurité, tandis que les jonctions peuvent être considérées comme plus sûres car elles sont contraintes aux chemins locaux . Donc, si vous voulez un lien local et pouvez vivre avec un chemin absolu, vous êtes probablement mieux avec une jonction; sinon, considérons un lien symbolique pour ses capacités supplémentaires.

 enter image description here

** L’affirmation de la différence de vitesse/complexité provient d’une affirmation non vérifiée dans l’entrée Wikipedia sur les points d’analyse NTFS (une bonne lecture). *


Autres comparaisons de liens NTFS

Voici quelques autres comparaisons sur le sujet, mais elles peuvent être trompeuses lorsque vous envisagez des jonctions car elles ne répertorient pas les avantages énumérés ci-dessus.

Tiré d'ici (une bonne lecture d'introduction)

 enter image description here

De page SS64 sur MKLink

 enter image description here


Commentaires sur la terminologie

_ {Les jonctions sont des liens symboliques} _

Les jonctions et les liens symboliques font réellement la même chose de la même manière (points d'analyse), mis à part les différences susmentionnées dans leur traitement. En fait, techniquement, une jonction est un lien symbolique et la documentation peut parfois appeler une jonction un lien symbolique, comme c'est le cas ici . Donc, c'est juste quelque chose à savoir concernant la terminologie.

NTFS

Même si le PO le spécifie, il convient de souligner que "lien symbolique" est un terme très général qui n'est pas spécifique à NTFS. Donc, pour être précis, cette comparaison concerne les jonctions NTFS par rapport aux liens symboliques NTFS.

38
u8it