Quelle est la différence entre les liens physiques NTFS et les jonctions de répertoires?


79

Le titre dit tout ... quelle est la différence? Quand utiliser l'un et quand utiliser l'autre?

Ajouté: Notez que les points de jonction , les liens durs et les liens symboliques (soft) sont trois choses distinctes sur NTFS.


2
Selon la documentation Microsoft, il existe trois catégories distinctes: Lien fixe : msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Jonction (lien logiciel ): msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Lien symbolique: msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx .
Josip Medved

Réponses:


33

Les fichiers de données NTFS sont stockés avec tous leurs attributs en tant qu '"inode" avec un ID et les noms de fichiers pointent vers l'inode. Tous les fichiers ont un + lien dur. certains outils peuvent créer des noms supplémentaires (liens durs) qui pointent vers le même inode, qui possède un compteur du nombre de noms pointant vers lui. Si le nombre passe à zéro, le système d'exploitation supprime le fichier, l'inode.

Des outils spéciaux, tels que LN, peuvent créer des noms de fichiers supplémentaires qui pointent vers des inodes existants, en utilisant un nom de fichier qui les pointe. Notez que tous les attributs de fichier, y compris les dates et les heures, sont stockés avec l'inode, pas le nom de fichier.

Les liens physiques (extra) sont utiles lorsque vous souhaitez que différents noms pointent vers les mêmes données, en lecture ou en écriture. Ils économisent de l'espace et des frais généraux. Cependant, ils clobber des programmes qui supposent des noms différents pointent sur des données différentes. Par exemple, si vous remplacez des références à des fichiers en double par des liens physiques en un seul fichier, vous avez supprimé toute sauvegarde que vous avez! Le système d'exploitation Windows est un programme qui suppose que différents noms pointent vers différents ensembles de bits.

Les liens physiques doivent être sur le même volume physique et logique.

Ils sont utiles pour:

  • réduction de la longueur des chemins puisque Windows ne prend en charge que 256 caractères environ.

  • réduction de l'espace de stockage des fichiers de données en double - par exemple, vous pouvez effectuer plusieurs sauvegardes d'une partition avec plusieurs arborescences de répertoires complètes, mais avec des liens fixes pour les fichiers qui n'ont pas changé depuis la sauvegarde précédente.

Les points de jonction sont plus encombrants et utilisent des points de réparation (que je ne comprends pas). Ils peuvent pointer sur différents volumes physiques ou logiques, mais ils doivent se trouver sur le même ordinateur. Ils peuvent apparemment être utilisés comme des liens symboliques pour des répertoires, permettant ainsi un deuxième nom pour la même destination, mais limité à un seul ordinateur, plutôt qu’à un seul volume.

Utile pour réduire la longueur des chemins ou simplifier l'utilisation de plusieurs programmes avec des noms de répertoire codés en dur.

Mêmes mises en garde aussi! De nombreux programmes prennent des noms différents = différents fichiers.

Et puis il y a les liens symboliques (qui peuvent aller à travers les réseaux), les raccourcis et les PIF et .....

Aussi quelques informations de Microsoft lui - même :

En gros, ils recommandent d'utiliser des liens physiques uniquement pour les fichiers d'un même volume (lettre d'unité de disque) et des points de jonction uniquement pour des répertoires situés sur le même ordinateur (ils peuvent s'étendre sur différents volumes locaux).


1
Le lien symbolique fonctionne-t-il au niveau du disque dur (NTFS) ou sur le concept de niveau du système d'exploitation Windows?
IsmailS

48

Définitions rapides:

Lien symbolique: lien vers un fichier ou un répertoire du même volume ou un autre (lettre de lecteur) ou même vers un fichier ou un répertoire distant (en utilisant UNC dans son chemin).

Lien dur: Lien vers un fichier du même volume (lettre de lecteur) uniquement. Chaque fichier (données du fichier) a au moins 1 lien dur (nom du fichier). La suppression de tous les liens physiques supprime effectivement le fichier.

Jonction: lien vers un répertoire du même volume ou d'un volume différent (lettre de lecteur), mais pas vers un répertoire distant.


Détails:

En supposant que vous travaillez avec des volumes NTFS dans Windows Vista / 7, vous pouvez utiliser l'outil de ligne de commande MKLINK pour créer les trois types de liens:

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

        /D      Creates a directory symbolic link.  Default is 
                a file symbolic link.

        /H      Creates a hard link instead of a symbolic link.

        /J      Creates a Directory Junction.

        Link    specifies the new symbolic link name.

        Target  specifies the path (relative or absolute) that 
                the new link refers to.

Liens symboliques : un lien symbolique est un objet du système de fichiers qui pointe vers un autre objet du système de fichiers (par exemple: fichier / répertoire).

  • MKLINKpeut être utilisé pour créer des liens symboliques. L'utilisation de ce /Dparamètre crée un lien symbolique dans le répertoire. MKLINK ne vérifie pas si la cible est un fichier ou un répertoire, ni même si la cible existe! Cela signifie que vous pouvez éventuellement créer des liens non valides, tels qu'un lien symbolique de répertoire vers un fichier ou un lien symbolique vers un fichier / répertoire non existant.

  • Les liens symboliques peuvent être des liens absolus ou relatifs. Les liens absolus sont des liens qui spécifient chaque partie du nom du chemin, tandis que les liens relatifs sont déterminés en fonction du lieu où les spécificateurs de lien relatif se trouvent dans un chemin spécifié.

  • Les liens symboliques absolus peuvent pointer vers des fichiers / répertoires d'un même volume ou d'un volume différent, ainsi que vers un fichier ou un répertoire distant à l'aide du chemin UNC. Cependant, les liens symboliques relatifs sont limités à un seul volume.

  • Des privilèges élevés sont requis pour créer un lien symbolique bien qu'une fois créés, les privilèges élevés ne sont plus nécessaires pour supprimer le lien.

Liens physiques : Un lien physique est la représentation du système de fichiers d’un fichier par lequel plusieurs chemins renvoient à un seul fichier.

  • MKLINKpermet de créer des liens physiques (en utilisant le /Hparamètre) uniquement des fichiers (pas des répertoires). Un lien physique ne peut être créé qu'à partir d'un fichier du même volume.

  • Un fichier contenant plusieurs liens physiques n'est réellement supprimé que lorsque tous les liens matériels sont supprimés, c'est-à-dire que le nombre de liens atteint zéro. Ainsi, chaque fichier que vous créez a au moins un lien physique, que vous l'utilisiez MKLINKou non.

  • Toute modification apportée à ce fichier est immédiatement visible pour les applications qui y accèdent via les liens physiques qui y font référence. Toutefois, la taille de l'entrée de répertoire et les informations d'attribut sont mises à jour uniquement pour le lien par lequel la modification a été effectuée.

  • Notez que les attributs du fichier sont reflétés dans chaque lien physique vers ce fichier et que les modifications apportées aux attributs de ce fichier se propagent à tous les liens physiques. Par exemple, si vous désélectionnez l'attribut en lecture seule sur un lien physique pour supprimer ce lien physique particulier et qu'il existe plusieurs liens physiques vers le fichier réel, vous devrez redéfinir l'attribut en lecture seule du fichier. à partir de l’un des liens durs restants pour ramener le fichier et tous les liens durs restants à l’état de lecture seule.

Jonctions : une jonction (également appelée lien symbolique) diffère d'un lien physique en ce que les objets de stockage qu'elle référence sont des répertoires distincts, et une jonction peut relier des répertoires situés sur des volumes locaux différents sur le même ordinateur. Sinon, les jonctions fonctionnent de manière identique aux liaisons en dur. Les jonctions sont mises en œuvre via des points d'analyse.

  • MKLINKpermet de créer une jonction (en utilisant le /Jparamètre) d'un répertoire (et même de fichiers bien que cela devrait probablement être considéré comme un lien invalide).

  • Une jonction peut être considérée comme l'équivalent d'un lien physique pour un lien symbolique vers un répertoire. Un lien de jonction ne peut pas être créé dans un répertoire distant, mais peut être créé dans un répertoire situé sur le même volume / sur un autre.


Références:

[1] Liens physiques et jonctions: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2] Création de liens symboliques: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] "Jonction d'annuaire" vs "lien symbolique d'annuaire"?


9

Le lien dur est juste un autre nom pour un fichier. Si vous avez un fichier nommé A.txt et que vous avez un lien L.txt, une fois que vous supprimez A.txt, vous aurez toujours accès à ses données via L.txt. Ce n'est que lorsque les deux sont supprimés que le fichier est parti.

D'autre part, vous avez ce qu'on appelle un lien symbolique (jonction si c'est un dossier ou lien symbolique si c'est un fichier). Dans ce cas, lorsque vous supprimez A.txt, le fichier est vraiment parti. La suppression de L.txt n’a aucun effet sur le fichier.

Les liens physiques ne peuvent être utilisés que sur la même partition que le fichier d'origine et les liens symboliques peuvent être utilisés sur plusieurs partitions.

Le fichier et le dossier PS sont généralement interchangeables en ce qui concerne NTFS.


3
Désolé, les jonctions et les liens symboliques ne sont pas la même chose pour NTFS. :(
Vilx-

2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx Citation: "Une jonction (aussi appelée lien symbolique )" "
Josip Medved

3
Cependant, il existe une distinction supplémentaire entre jonction (alias soft link) et lien symbolique, mais je ne suis pas entré dans les détails ici. Pour ceux que cela intéresse, des informations plus détaillées sont disponibles dans la documentation Windows à l’ adresse msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx et msdn.microsoft.com/en-us/library/aa363878%28VS. 85% 29.aspx .
Josip Medved

1
Depuis Windows Vista, il existe à la fois des jonctions NTFS (on ne peut pointer que vers des répertoires) et des liens symboliques de style Unix (pouvant pointer littéralement sur n'importe quoi).
Grawity

0

Lien dur: ne fonctionne que pour le même volume.
Jonction: n'importe quel volume local
Symbolique: volume local ou chemin UNC

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

Bonus Chatter

Windows crée des jonctions et des liens symboliques à des fins AppCompat; pour ces applications mal écrites qui pensent:

  • C: \ Utilisateurs \ Tous les utilisateurs
  • C: \ Utilisateurs \ Utilisateur par défaut

sont valides.

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

La même chose est vraie dans le dossier de profil de l'utilisateur, pour les applications qui s'attendent à ce que les dossiers de l'ère Windows XP existent encore aujourd'hui:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |

2
et devient encore plus fou sur les installations Windows non anglaises car vous obtenez alors ENCORE PLUS de liens symboliques / jonctions, car certains peuvent ou non savoir que Windows jusqu’à XP possédait en fait des noms de répertoire locaux, qui peuvent facilement gâcher des scripts ou des tutoriels conçus pour d’autres langues. Vista a tué cela et utilise à la place les noms DISPLAY localisés, donc les chemins réels sont les mêmes dans toutes les langues, mais en raison de ces fenêtres localisées, elles contiennent encore plus de liens que les liens anglais
My1

-1

Pour répondre par programme:

Lien dur: shared_ptr <>. Il en existe toujours un.

Lien symbolique: faible_ptr <>. Valable uniquement lorsqu'un autre lien dur existe.


C'est la plus facile. :) La question portait sur Hard Links vs Jonctions. ;)
Vilx-
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.