Qu’est-ce que le lien souple et le lien dur sous Linux ?

Un lien symbolique ou souple est un lien réel vers le fichier original, alors qu’un lien dur est une copie miroir du fichier original. Si vous supprimez le fichier original, le lien souple n’a aucune valeur, car il pointe vers un fichier inexistant. Mais dans le cas d’un lien dur, c’est tout le contraire. Même si vous supprimez le fichier original, le lien dur contient toujours les données du fichier original. Parce que le lien dur agit comme une copie miroir du fichier original.

En bref, un lien souple

  • peut traverser le système de fichiers,
  • permet de faire des liens entre les répertoires,
  • a un numéro d’inode et des autorisations de fichiers différents de ceux du fichier original,
  • les autorisations ne seront pas mises à jour,
  • a seulement le chemin du fichier original, pas le contenu.

Un lien dur

  • ne peut pas franchir les limites du système de fichiers (c’est-à-dire.c’est-à-dire qu’un lien dur ne peut fonctionner que sur le même système de fichiers),
  • ne peut pas lier des répertoires,
  • a le même numéro d’inode et les mêmes permissions du fichier d’origine,
  • les permissions seront mises à jour si nous changeons les permissions du fichier source,
  • a le contenu réel du fichier d’origine, de sorte que vous pouvez toujours voir le contenu, même si le fichier d’origine a été déplacé ou supprimé.

Vous ne comprenez toujours pas ? Eh bien, permettez-moi de vous montrer quelques exemples pratiques.

Créer un lien logiciel ou un lien symbolique

Créons un répertoire vide appelé « test ».

$ mkdir test

Changez pour le répertoire « test »:

$ cd test

Maintenant, créez un nouveau fichier appelé source.file avec quelques données comme indiqué ci-dessous.

$ echo "Welcome to OSTechNix" >source.file

Voyons les données du fichier source.file.

$ cat source.fileWelcome to OSTechNix

Bien, le fichier source.file a été créé.

Maintenant, créez le un lien symbolique ou logiciel vers le source.file.

Pour ce faire, exécutez:

$ ln -s source.file softlink.file

Comparons les données du source.file et du softlink.file.

$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix

Comme vous le voyez dans la sortie ci-dessus, softlink.file affiche les mêmes données que source.file.

Vérifions les inodes et les permissions de softlink.file et de source.file.

$ ls -lia

Sample output:

total 1211665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file

Comme nous le voyons dans la capture d’écran ci-dessus, le numéro d’inode (11665731 vs 11665692) et les permissions de fichier (lrwxrwxrwx vs -rw-r–r–) sont différents, même si le softlink.a le même contenu que source.file, . Par conséquent, il est prouvé que le lien logiciel ne partage pas le même numéro d’inode et les mêmes permissions que le fichier original.

Maintenant, supprimez le fichier original (c’est-à-dire source.file) et voyez ce qui se passe.

$ rm source.file

Vérifiez le contenu du softlink.file en utilisant la commande:

$ cat softlink.file

Sample output:

cat: softlink.file: No such file or directory

Comme vous le voyez ci-dessus, il n’y a pas de tel fichier ou répertoire appelé softlink.file après que nous ayons supprimé le fichier original (c’est-à-dire source.file). Donc, maintenant nous comprenons que le softlink est juste un lien qui pointe vers le fichier original. Le lien logiciel est comme un raccourci vers un fichier. Si vous supprimez le fichier, le raccourci est inutile.

Comme vous le savez déjà, si vous supprimez le lien souple, le fichier original sera toujours disponible.

Lecture suggérée:

  • Comment lister les liens symboliques sur Linux
  • Comment trouver les liens symboliques brisés et les supprimer sur Linux

Créer un lien dur

Créer un fichier appelé source.file avec certains contenus comme indiqué ci-dessous.

$ echo "Welcome to OSTechNix" >source.file

Vérifions le contenu du fichier.

$ cat source.fileWelcome to OSTechNix

source.file a été créé maintenant.

Maintenant, créons le lien dur vers le fichier.source comme indiqué ci-dessous.

$ ln source.file hardlink.file

Vérifions le contenu du lien dur.fichier.

$ cat hardlink.fileWelcome to OSTechNix

Vous voyez que le lien dur.fichier affiche les mêmes données que le fichier.source.

Vérifions l’inode et les permissions de hardlink.file et de source.file.

$ ls -lia

Sortie d’exemple:

total 1611665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 .4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

Maintenant, nous voyons que hardlink.file et source.file ont le même numéro d’inode (11665692) et les mêmes permissions de fichier (-rw-r–r–). Par conséquent, il est prouvé que le fichier de lien dur partage le même numéro d’inodes et les mêmes permissions du fichier original.

Note : Si nous changeons les permissions sur source.file, la même permission sera appliquée au hardlink.file aussi.

Maintenant, supprimez le fichier original (i.e source.file) et voir ce qui se passe.

$ rm source.file

Vérifier le contenu de hardlink.file en utilisant la commande:

$ cat hardlink.file

Sample de sortie:

Comme vous le voyez ci-dessus, même si j’ai supprimé le fichier source, je peux voir le contenu du hardlink.file. Par conséquent, il est prouvé que le Hard link partage le même numéro d’inode, les permissions et les données du fichier original.

Alors, quelle est la différence entre le Hard link et le fichier copié normal ?

Vous pourriez vous demander pourquoi nous créerions un hard link alors que nous pouvons facilement copier/coller le fichier original ? Créer un lien dur vers un fichier est différent de le copier.

Si vous copiez un fichier, il ne fera que dupliquer le contenu. Donc si vous modifiez le contenu d’un fichier (original ou lien dur), cela n’a aucun effet sur l’autre. Cependant, si vous créez un lien dur vers un fichier et modifiez le contenu de l’un ou l’autre des fichiers, le changement sera vu sur les deux.

Regardons le fichier source.

$ cat source.file Welcome to OSTechNix

Le fichier source a une seule ligne qui dit – Bienvenue à OSTechNix.

Ajoutez une nouvelle ligne, par exemple « Bienvenue à Linux » dans source.file ou hardlink.file.

$ echo "Welcome to Linux" >>source.file

Vérifiez maintenant le contenu des deux fichiers.

$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux

Vous voyez ? Les modifications que nous venons de faire sur source.file sont mises à jour dans les deux fichiers. Signification – les deux fichiers (source et lien dur) se synchronise. Les changements que vous faites dans un fichier seront reflétés dans l’autre. Si vous copiez/collez normalement le fichier, vous ne verrez pas de nouveaux changements dans l’autre fichier.

Pour plus de détails, consultez les pages de manuel.

$ man ln

C’est tout pour le moment. J’espère que vous avez une idée de base sur le lien symbolique ou soft link et le hard link.

Merci de vous être arrêté !

Aidez-nous à vous aider :

  • Souscrivez à notre bulletin d’information par courriel : Inscrivez-vous maintenant
  • Soutiens OSTechNix : Faites un don via PayPal
  • Téléchargez des livres électroniques et des vidéos gratuits : OSTechNix sur TradePub
  • Connectez-vous avec nous : Reddit | Facebook | Twitter | LinkedIn | Flux RSS

Bonne journée !

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.