Quelle est la différence entre les liens durs NTFS et les jonctions de répertoire?

Le titre dit tout … quelle est la différence? Quand puis-je utiliser un et quand puis-je utiliser l'autre?

Ajout: Notez que les points de jonction , les liens durs et les liens symboliques (doux) sont trois éléments distincts sur NTFS.

    Les fichiers de données NTFS sont stockés avec tous leurs attributs comme "inode" avec un ID et les noms de fichiers indiquent l'inode. Tous les fichiers ont un lien dur +. Certains outils peuvent créer des noms supplémentaires (liens forts) qui indiquent le même inode, qui comporte un compteur du nombre de noms qui le montrent. Si le numéro passe à zéro, le système d'exploitation supprime le fichier, l'inode.

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

    (Extra) sont utiles lorsque vous souhaitez que différents noms indiquent les mêmes données, lire ou écrire. Ils économisent de l'espace et des frais généraux. Cependant, ils bloquent les programmes qui prennent des noms différents indiquant des données différentes. Par exemple, si vous remplacez les références aux fichiers en double par des liens difficiles à 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 indiquent différents ensembles de bits.

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

    Ils sont utiles pour:

    • Réduisant les longueurs de chemin car Windows ne supporte que 256 caractères.

    • Réduisant l'espace de stockage des fichiers de données en double – par exemple, vous pouvez avoir plusieurs sauvegardes d'une partition avec plusieurs arbres de répertoires complets, mais avec des liens difficiles pour les fichiers qui n'ont pas changé depuis la précédente sauvegarde.

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

    Utile pour réduire les longueurs de chemin ou simplifier le travail avec plusieurs programmes avec des noms de répertoires codés.

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

    Et puis il existe des liens symboliques (qui peuvent traverser les réseaux), les raccourcis et les PIF et …..

    En outre, certaines informations de Microsoft lui – même :

    Fondamentalement, ils disent utiliser des liens forts uniquement pour les fichiers dans le même volume (lettre de lecteur de disque) et les points de jonction uniquement pour les répertoires sur le même ordinateur (ils peuvent s'étendre sur différents volumes locaux).

    Définitions rapides:

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

    Hard Link: Un lien vers un fichier sur le même volume (lettre de lecteur). Chaque fichier (données du fichier) comporte au moins 1 lien dur (nom du fichier). La suppression de tous les liens durs efface efficacement le fichier.

    Jonction: un lien vers un répertoire sur un volume identique ou différent (lettre de lecteur) mais pas sur 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 système de fichier qui pointe vers un autre objet système de fichier (p. Ex. Fichier / répertoire).

    • MKLINK peut être utilisé pour créer des liens symboliques. L'utilisation du paramètre /D crée un lien symbolique de répertoire. MKLINK ne vérifie pas si la cible est un fichier ou un répertoire ou même si la cible existe! Cela signifie que vous pouvez potentiellement créer des liens non valides comme 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 de chemin tandis que les liens relatifs sont déterminés par rapport à l'endroit où les spécificateurs de liaison relative se trouvent dans un chemin spécifié.

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

    • Des privilèges élevés sont nécessaires pour créer un lien symbolique mais une fois que des privilèges élevés créés ne sont pas nécessaires pour supprimer le lien.

    Liens durs : un lien dur est la représentation du système de fichiers d'un fichier par lequel plusieurs chemins font référence à un seul fichier.

    • MKLINK permet de créer des liens durs (en utilisant le paramètre /H ) uniquement des fichiers (pas des répertoires). Un lien difficile ne peut être créé qu'un fichier dans le même volume.

    • Un fichier avec plusieurs liens durs n'est effectivement supprimé que lorsque tous les liens forts sont supprimés, c'est-à-dire que le nombre de liens atteint zéro. Donc, vraiment, tous les fichiers que vous créez ont au moins un lien difficile pour savoir si vous utilisez MKLINK ou non.

    • Toute modification de ce fichier est instantanément visible pour les applications qui l'accèdent via les liens durs qui le font référence. Cependant, la taille de l'entrée du 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 sur le fichier sont reflétés dans chaque lien difficile à ce fichier, et les modifications apportées aux attributs de ce fichier se propagent à tous les liens durs. Par exemple, si vous déconseillez l'attribut en lecture seule sur un lien dur pour supprimer ce lien dur particulier et qu'il y a plusieurs liens durs au fichier réel, vous devrez redéfinir l'attribut en lecture seule sur le fichier À partir de l'un des liens durs restants pour ramener le fichier et tous les liens durs restants à l'état en lecture seule.

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

    • MKLINK permet de créer une jonction (en utilisant le paramètre /J ) d'un répertoire (et même de fichiers, cela devrait probablement être considéré comme un lien non valide).

    • Une jonction pourrait être considérée comme l'équivalent du lien dur 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 sur le même volume / différent.


    Les références:

    [1] Liens et jonctions difficiles: 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 de répertoire"?

    Le lien dur est juste un autre nom pour un fichier. Si vous avez un fichier nommé A.txt et que vous avez le lien L.txt, une fois que vous avez effacé A.txt, vous aurez toujours accès à ses données via L.txt. Seulement lorsque les deux fichiers ont été supprimés.

    D'autre part, vous avez un appel appelé soft-link (jonction s'il s'agit d'un dossier ou d'un lien symbolique s'il s'agit d'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. Quoi qu'il en soit.

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

    PS Le fichier et le dossier sont principalement interchangeables jusqu'à NTFS.

    Pour répondre par programme:

    Lien dur: shared_ptr <>. Toujours un existe.

    Lien souple: weak_ptr <>. Seulement valable lorsqu'un autre lien dur existe.