Qu'est-ce qu'un lien difficile dans Linux?

J'ai cherché autour de moi et j'essaie de comprendre la différence entre un lien dur et un lien symbolique (lien souple).

J'ai trouvé que ce lien est très utile. Mais je ne suis toujours pas très clair. Je comprends que le lien logiciel n'est pas une copie du fichier original, mais un lien dur est-il une copie ou non?

Pour utiliser une analogie à partir de la livraison du courrier, un lien symbolique ressemble à une adresse de transfert … quand quelque chose essaie d'ouvrir un lien symbolique, il ouvre le "fichier" (pas littéralement un fichier, cependant) stocké là-bas, et le voit Devrait plutôt regarder un fichier avec un nom différent, donc il ouvre l'autre fichier à la place.

Un lien dur ressemble plutôt à avoir deux adresses pour le même endroit. (Bien sûr, ce n'est pas vraiment possible dans le monde physique). Lorsque quelque chose essaie de lire le nom de fichier (adresse), ils obtiennent le même fichier physique (emplacement).

Donc, un lien difficile n'est pas une copie, car le fichier n'est enregistré qu'une seule fois (mais avec plusieurs noms). Mais il se comporte comme une copie, car vous pouvez accéder aux mêmes informations à partir de deux noms de fichiers.

Le lien direct N ° A (deuxième et tous les ultérieurs) d'un fichier est un pointeur vers les mêmes inodes sur le disque.

Lorsque vous créez un lien difficile, cela signifie que le même fichier s'affiche dans deux endroits différents. Un fichier n'est vraiment qu'une référence à un ensemble de blocs de données sur les disques, donc un lien dur ajoute une autre référence. Les fichiers sont rarement vraiment supprimés; Les références sont simplement supprimées, de sorte qu'il est impossible d'accéder aux données. C'est pourquoi, lorsque vous supprimez un fichier que vous avez créé en tant que lien dur, l'autre fichier d'origine reste, et vice versa.

D'autre part, un lien symbolique est une direction pour accéder à un fichier avec un certain nom. Il dit à tous les programmes, "Si vous souhaitez utiliser ce fichier, c'est là-bas". C'est pourquoi si vous supprimez la cible du lien symbolique, le lien symbolique se casse. Et si vous supprimez le lien, la cible n'est pas affectée.

Un fichier dans le système * nix comporte deux parties. Une partie de données et une autre est inode. Inode store meta (informations pertinentes à l'emplacement des données, où dans le disque dur, il est stocké) des informations. Le lien dur crée crée une copie exacte de cet inode. Alors que sym link crée un inode qui indique l'inode de l'inode réel. Donc, les données d'inode dans hardlink sont identiques à celles de cible, mais des données différentes dans le lien sym. Donc, pour mettre la longue histoire à court, les liens sym et les liens forts diffèrent selon leur contenu des données inode et non les données du fichier. C'est ma compréhension de la différence entre le lien sym et le lien difficile. J'ai eu du mal à comprendre cela, car il s'agit de quelque chose de plus développeur et je ne suis pas un développeur. Oh, bien informés, corrigez-moi si je me trompe.