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

"jonction de répertoire" vs "lien symbolique de répertoire" ?

Dans le contexte des NTFS :

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

/D Crée un lien symbolique de répertoire. La valeur par défaut est un lien symbolique de fichier. /H Crée un lien en dur au lieu d'un lien symbolique. /J Crée une jonction de répertoire. 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. Une jonction de répertoire n'est-elle pas exactement la même chose qu'un lien symbolique de répertoire ?

  2. Puisqu'un “répertoire” n'est en fait qu'un fichier, quelle serait la différence entre un lien symbolique de répertoire et un lien symbolique de fichier ?

Réponses (3)

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

Un carrefour n'est certainement pas la même chose qu'un lien symbolique de répertoire, bien qu'ils se comportent de manière similaire. La principale différence est que, si vous regardez un serveur distant, les jonctions sont traitées au niveau du serveur et les liens symboliques de répertoire sont traités 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 mettre un point de jonction c:\myjp et un lien symbolique de répertoire c:\mysymlink, tous deux pointant vers c:\targetfolder. Pendant que vous utilisez Alice, vous ne remarquerez pas beaucoup de différence entre les deux. Mais si vous utilisez une autre machine nommée Bob, alors le point de jonction

\Alice\c$\myjp pointera vers \Alice\c$\targetfolder

mais le lien symbolique

\Alice\c$\mysymlink pointera vers \Bob\c$\targetfolder

(Attention : par défaut, le système ne suit pas les liens symboliques sur les volumes distants, donc dans la plupart des cas le second exemple donnera en fait soit “Fichier introuvable” soit “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. Comme la cible du lien n'a pas besoin d'exister lorsque le lien est créé, le système de fichiers doit savoir s'il faut ou non indiquer aux applications qu'il s'agit d'un répertoire.

Il faut également noter que la création d'un lien symbolique nécessite un privilège spécial (par défaut, uniquement disponible pour les processus élevés) alors que la création d'une jonction ne nécessite que l'accès au système de fichiers.

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

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

Supposons que tout MyLink est un lien symbolique et que tout MyJunc est une jonction pointant vers Target as created.

par exemple 002 mklink /D MyLink C:\T_Dir pour créer un lien symbolique vers le répertoire cible 002 mklink /J MyJunc C:\T_Dir pour créer une jonction de répertoire vers le répertoire cible 002 Où la syntaxe est mklink [/J,/D] [link path] [target path] tel que tapé sur la machine locale 002


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***

Erreur 1 - Si vous débloquez l'accès aux liens symboliques distants sur votre machine locale, alors cela fonctionnera… mais seulement sur la machine locale où il est débloqué

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

Les liens symboliques ont plus de fonctionnalités, tandis que les jonctions semblent presque être une caractéristique héritée en raison de leurs limitations, mais les implications de ces limitations en matière de sécurité sont précisément la raison pour laquelle une jonction pourrait être préférée à un lien symbolique. Le ciblage à distance rend les liens symboliques plus fonctionnels, mais améliore également leur profil de sécurité, tandis que les carrefours peuvent être considérés comme plus sûrs parce qu'ils sont limités aux chemins locaux. Donc, si vous voulez un lien local et que vous pouvez vivre avec un chemin absolu, vous êtes probablement mieux avec une jonction ; sinon, considérez un lien symbolique pour ses capacités supplémentaires.

**La déclaration de différence de vitesse/complexité vient d'une déclaration non vérifiée dans l'entrée de Wikipedia sur les points de repartition NTFS ](https://en.wikipedia.org/wiki/NTFS_reparse_point) (une bonne lecture). *


Autres comparaisons de liaisons NTFS

Voici d'autres comparaisons sur le sujet, mais elles peuvent être trompeuses lorsqu'on considère les jonctions car elles n'énumèrent pas les avantages que j'énumère ci-dessus. Repris ici (une bonne lecture d'introduction)

Page SS64 sur MKLink


Commentaires sur la terminologie

Les jonctions sont des liens symboliques

Les jonctions et les liens symboliques font vraiment la même chose de la même manière (points de repartition), à part les différences susmentionnées dans la manière dont ils sont traités. En fait, techniquement, un Junction est un lien symbolique, et parfois la documentation pourrait appeler un Junction un lien symbolique, comme c'est le cas ici . Même si le PO le précise, il convient de souligner que “lien symbolique” est un terme très général qui n'est pas spécifique aux NTFS. Donc, pour être précis, cette comparaison porte sur les jonctions NTFS et les liens symboliques NTFS.