Quelle est la différence entre les points de jonction NTFS et les liens symboliques?

140

À un niveau élevé, la seule différence évidente entre les points de jonction NTFS et les liens symboliques est que les jonctions ne peuvent être que des répertoires, tandis que les liens SymLinks sont également autorisés à cibler des fichiers.

Quelles autres différences existent entre les deux?

(Remarque, j'ai déjà vu cette question et ce que je recherche est un peu différent - cette question est à la recherche d'une liste pour et contre, je recherche un ensemble de différences techniques)

Billy ONeal
la source

Réponses:

88

Les liens symboliques ont plus de fonctionnalités, tandis que les jonctions semblent presque être une fonctionnalité héritée en raison de leurs limitations, mais les implications de sécurité de ces limitations expliquent précisément pourquoi une jonction peut ê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 sont plus sûres car elles sont limitées 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érez un lien symbolique pour ses capacités supplémentaires.

entrez la description de l'image ici

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


Autres comparaisons de liens NTFS

Voici quelques autres comparaisons sur le sujet, mais celles-ci peuvent être trompeuses lors de l'examen des jonctions, car elles ne répertorient pas les avantages que j'énumère ci-dessus.

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

entrez la description de l'image ici

À partir de la page SS64 sur MKLink

entrez la description de l'image ici


Commentaires sur la terminologie

Les jonctions sont des points d'analyse (peuvent être décrits comme des liens symboliques)

Les jonctions NTFS et les liens symboliques NTFS font vraiment la même chose de la même manière (points d'analyse), mis à part les différences susmentionnées dans la façon dont ils sont traités. En fait, techniquement, une jonction est un «lien symbolique» au sens plus général du terme, et parfois la documentation peut appeler une jonction un lien symbolique, comme c'est le cas ici . Dans de tels cas, «lien symbolique» ne signifie pas lien symbolique NTFS qui est différent d'une jonction (voir ci-dessous).

NTFS

Même si l'OP 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 et les liens symboliques NTFS.

u8it
la source
Les points de jonction et les liens symboliques sont tous deux des points d'analyse, mais les points de jonction ne sont certainement pas des liens symboliques! Oh et la table est fausse sur un point également. La cible d'un point de jonction doit exister lors de sa création, mais elle peut en effet être supprimée ultérieurement.
0xC0000022L
3
@ 0xC0000022L Oui, vous avez raison si vous dites qu'une jonction NTFS n'est pas un lien symbolique NTFS. Je peux voir comment ma formulation pourrait être mal comprise pour dire cela. Je vais éditer pour clarifier, mais le fait est que, dans ce contexte, «lien symbolique» fait référence aux liens symboliques NTFS qui sont des implémentations spécifiques de l'idée plus générale de «lien symbolique» à laquelle les jonctions appartiennent également. Avez-vous suivi le lien que j'ai publié? Cela ne veut pas dire qu'une jonction NTFS est un lien symbolique NTFS, mais le terme «lien symbolique» peut être utilisé pour décrire une jonction.
u8it
assez juste, quand on se réfère au concept, cela peut être une façon de le penser. Mais je pense vraiment que le terme point d'analyse ramène le concept à la maison, car il explique beaucoup plus ce qui se passe dans le gestionnaire d'objets NT et que ce concept va bien au-delà de ce que les liens symboliques étaient sous Unix, par exemple (où ce sont des fichiers ordinaires avec un drapeau spécial). Et oui, j'ai entendu des points de jonction expliqués comme des "liens symboliques pour les répertoires".
0xC0000022L
@ 0xC0000022L De plus, je ne vois pas le problème que vous mentionnez à propos du tableau erroné. Faites-vous référence à la caractéristique «Peut indiquer une cible inexistante»? Et êtes-vous en train de dire que c'est faux au moins lors de la première création d'une jonction? Si vous êtes certain que c'est le cas dans un environnement spécifique (peut-être pour Windows XP ou à cause des paramètres de sécurité), je vais en prendre note, mais d'après mon expérience et d'après la documentation (et je viens de confirmer sur Windows 10), une jonction peut ciblez toujours un chemin inexistant, même lors de la création ... il peut y avoir des paramètres de sécurité qui restreignent cela.
u8it
Les jonctions ne sont pas héritées. Ils implémentent des points de montage (bind / volume), pas des liens symboliques. Lorsqu'un chemin est analysé dans une ouverture, le système se souvient des jonctions traversées afin d'évaluer les liens symboliques relatifs qui traversent les points de montage. Ces traversées doivent gérer une jonction comme s'il s'agissait d'un répertoire normal, alors qu'un lien symbolique est analysé comme son chemin cible. Par exemple, dites "C: \ junction" et "C: \ symlink" ciblent tous deux "E: \ spam", et le lien symbolique relatif "E: \ spam \ eggs.txt" cibles ".. \ eggs.txt". Puis "C: \ junction \ eggs.txt" se résout en "C: \ eggs.txt", et "C: \ symlink \ eggs.txt" se résout en "E: \ eggs.txt".
Eryk Sun
35

Les endroits que je trouve les plus utiles pour les différences:

http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx

http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx

Postulat: Symlink est à Junction sous Windows comme Symlink est à Hardlink sous Unix.

http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link

Windows 7 et Windows Vista prennent en charge les liens symboliques pour les fichiers et les répertoires avec l'utilitaire de ligne de commande mklink. Contrairement aux points de jonction, un lien symbolique peut également pointer vers un fichier ou un chemin de réseau SMB (Server Message Block) distant. En outre, l'implémentation de lien symbolique NTFS fournit une prise en charge complète des liens entre systèmes de fichiers. Cependant, la fonctionnalité permettant des liens symboliques entre hôtes nécessite que le système distant les prenne également en charge, ce qui limite effectivement leur prise en charge à Windows Vista et aux systèmes d'exploitation Windows ultérieurs.

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

Un lien symbolique, tel que créé par Windows, est très similaire à une jonction de répertoire, mais contrairement à une jonction de répertoire, il peut pointer vers un fichier ou un fichier ou un répertoire réseau distant. La cible peut être définie comme un chemin par rapport à la position du lien symbolique, ou un chemin absolu dans le volume courant ou un autre. Notez également que les liens symboliques vers les fichiers sont différents des liens symboliques vers les répertoires et la cible doit correspondre à la définition.

James Manning
la source
1
Pour des informations spécifiques à Windows 7: msdn.microsoft.com/en-us/library/windows/desktop/…
Joshua Drake
14
La réponse acceptée a déjà trois ans, mais je voudrais souligner que les points de jonction NFTS ne se comparent pas aux liens physiques sous Unix, comme le suggère le postulat cité. Cela devrait être évident, car un point de jonction ne peut pas référencer un fichier mais un lien physique peut le faire. NTFS prend également en charge les liens physiques (qui sont différents des jonctions), et ceux-ci sont plus ou moins comparables aux liens physiques Unix.
@elgonzo Tout à fait d'accord. AFAIK un lien dur Unix ne peut faire référence qu'à un fichier, il ne ressemble donc pas du tout à une jonction de répertoire NTFS.
Franklin Yu
20

Fonctionnellement, dans les fenêtres, une fois créées, il n'y a pas de réelle différence. Cependant, il existe des différences significatives entre eux dans ce qu'ils peuvent faire. Les jonctions ne peuvent être utilisées que pour la création de liens vers des dossiers, sur le même lecteur ou sur des lecteurs différents, mais uniquement si ces lecteurs se trouvent sur le système local (vous ne pouvez pas créer de lien de jonction vers un dossier sur un réseau.) Liens symboliques cependant, n'ont pas les mêmes restrictions. Les liens symboliques peuvent être utilisés pour créer des liens vers des fichiers ou des dossiers et ces fichiers ou dossiers peuvent être situés sur le même système (même lecteur ou différents lecteurs) ou vers un partage réseau et peuvent utiliser des symboles d'emplacement relatif ("\\ system2 \ foldera \ file.txt "," d: \ foldera \ file.txt "," \\ system2 \ foldera "," d: \ foldera "ou" d: \ foldera \ folderb .. "

Pour résumer: Les points de jonction sont limités aux dossiers sur le système local uniquement, tandis que les liens symboliques peuvent créer des liens vers des dossiers ou des fichiers accessibles via un chemin UNC ou sur le système local avec plus de polyvalence dans la façon dont ces emplacements sont désignés. Les liens symboliques sont essentiellement un remplacement plus polyvalent des points de jonction et des liens physiques. De plus, les liens symboliques sont compatibles avec Unix et Linux lors de la création d'un lien avec chemin UNC multiplateforme.

J'espère que cela répond à votre question de manière satisfaisante. Édité pour corriger les erreurs typographiques.

Assistant techno
la source
10

Link Shell Extension, http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html , est un excellent outil pour créer et afficher de nombreux types de liens. Il a également une excellente documentation.

[Sur une installation complète, il ajoute un nouvel onglet de propriétés si vous regardez un lien avancé. At ajoute également des flèches de superposition d'icônes pour les différents types de liens - faites défiler jusqu'à la section FAQ si celles-ci n'apparaissent pas; Windows ne prend en charge que treize superpositions; il montre une solution de contournement de registre. Un exemple de son utilité informationnelle: tentative infructueuse d'obtenir des privilèges sur ce que vous pensiez être un dossier, mais en fait était un lien de jonction fourni par le système, souvent utilisé à des fins de compatibilité avec les anciennes éditions de Windows.]

Les jonctions et les liens symboliques agissent essentiellement de la même manière lorsqu'ils sont créés pour un répertoire sur un système local.

Toutefois:

Ils agissent différemment sur un réseau. Ce lien décrit ce comportement: /superuser/343074/directory-junction-vs-directory-symbolic-link

Si vous considérez les liens de jonction comme des «raccourcis qui trompent le système d'exploitation quant à l'emplacement», vous aurez une bonne comparaison pratique de leur utilisation et de ce qui les brise. La principale différence est que si vous copiez des liens symboliques ou des jonctions, il copie la cible, plutôt (comme des raccourcis) que le fichier contenant le pointeur. Comme pour les raccourcis, vous pouvez supprimer les liens symboliques ou de jonction sans supprimer les fichiers / dossiers cibles. [Liens physiques, le fichier n'est supprimé qu'avec la suppression du dernier lien - y compris de la corbeille. Examinez la balise de propriétés dans LSE pour l'un de ces liens pour voir la cible ou le nombre de références pour les liens physiques.]

Les liens physiques ou les raccourcis sont les seuls types de liens qui peuvent être déplacés sans effets secondaires comme la rupture ou la copie de la cible entière. Le déplacement de la cible rompt toujours les liens, bien qu'ils puissent facilement être mis à jour dans l'onglet des propriétés (affiché avec LSE) ou recréés, si compliqué, avec LSE.

La création de liens symboliques nécessite des privilèges d'administrateur, contrairement aux jonctions. Cela, ajouté à l'utilisation intensive et interne de Junctions par le système d'exploitation, suggère que Windows les gère de manière intuitive et attendue. [Méfiez-vous un peu des effets secondaires inattendus des dossiers système (par expérience avec Win 10).]

[Certaines des fonctionnalités spécifiques à la sauvegarde de Link Shell Extension sont extrêmement utiles - en bref, elle peut créer plusieurs types de structures de liens symboliques pouvant être mises à jour dans des dossiers standard à des fins de sauvegarde en attente.]

Argile
la source
Et Link Shell Extension ressemble à un excellent outil. Il existe également un utilitaire léger associé appelé ln.exe ... même si vous ne l'utilisez pas non plus, vous en apprendrez beaucoup simplement en lisant le guide d'utilisation simple du site Web.
u8it
Je pense que votre édition du 2 avril 2016 a rendu les choses moins claires, Clay. Je pense que vous vouliez dire quelque chose comme ceci: "La principale différence entre ceux-ci et les fichiers" raccourcis "est que si vous ... il copie la cible, plutôt que simplement le fichier qui contient le pointeur (ce qui se passe si vous copiez un raccourci file) "
Jon Coombs
4

Des liens symboliques ont été introduits très récemment sous Windows: à partir de Vista.

Les liens symboliques ne doivent pas être considérés comme une alternative à la technologie NTFS "Reparse Point" existante.

Microsoft explique que le seul but des liens symboliques est d'être plus compatible avec Unix.

MSDN: " Les liens symboliques ont été conçus pour faciliter la migration et la compatibilité des applications avec UNIX. Microsoft a implémenté ses liens symboliques pour fonctionner comme les liens UNIX. "

Vista est également le premier OS à utiliser des liens pour son propre fonctionnement. Pour être compatible avec les noms de dossier hérités, C:\Documents and Settingsest maintenant un lien vers C:\Users.

Fait intéressant, bien que Vista introduit des liens symboliques, cette " Documents and Settings" astuce est en fait une simple jonction ancienne.

Philippe
la source
2
Cette réponse ne dit rien sur les différences entre les liens symboliques et les jonctions. (En tant que tel, je ne pense pas que cela s'applique vraiment à cette question)
Billy ONeal
À partir de Windows Vista, le lien symbolique remplace les jonctions (également, comme nous le savons, les deux sont des points d'analyse)
Aravind
2

En plus de l'excellente réponse d'u8it:

Si quelqu'un est intéressé par la différence de comportement dans l' Explorateur de fichiers Windows dans Windows 10:

glisser-déposer dans le répertoire cible:

  • symbolic link: déplace le symbolic linkvers le répertoire cible
  • junction: déplace le original directoryvers le répertoire cible

clic droit + propriétés:

  • symbolic link: affiche les propriétés du raccourci
  • junction: affiche les original directorypropriétés du dossier

clic gauche moue dans le volet gauche (arborescence des répertoires):

  • symbolic link: sélectionne le original directory
  • junction: sélectionne le junction
Jinjinov
la source
La création de liens symboliques nécessite des privilèges d'administrateur, contrairement aux jonctions.
Jinjinov
Windows 10 version 10.0.17134.1130: le déplacement de la jonction dans l'explorateur ne déplace que le contenu du répertoire d'origine. Un clic gauche sur le lien symbolique dans l'arborescence ne sélectionne pas le répertoire d'origine.
SalgoMato le