GNU/Linux >> Tutoriels Linux >  >> Linux

Expliquer Soft Link et Hard Link sous Linux avec des exemples

Un symbolique ou lien symbolique est un lien réel vers le fichier d'origine, alors qu'un lien physique est une copie miroir du fichier d'origine. Si vous supprimez le fichier d'origine, le lien symbolique 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 d'origine, le lien physique contiendra toujours les données du fichier d'origine. Parce que le lien physique agit comme une copie miroir du fichier d'origine.

En bref, un lien symbolique

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

Un lien dur

  • ne peut pas franchir les limites du système de fichiers (c'est-à-dire qu'un lien physique ne peut fonctionner que sur le même système de fichiers),
  • impossible de lier des répertoires,
  • a le même numéro d'inode et les mêmes autorisations que le fichier d'origine,
  • les autorisations seront mises à jour si nous modifions les autorisations 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.

Comment créer un lien symbolique ou un lien symbolique

Créons un répertoire vide appelé "test" .

$ mkdir test

Passez au "test" répertoire :

$ 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 source.file.

$ cat source.file
Welcome to OSTechNix

Eh bien, le source.file a été créé.

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

Pour ce faire, exécutez :

$ ln -s source.file softlink.file

Comparons les données des deux source.file et 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 source.file .

$ ls -lia

Exemple de résultat :

total 12
11665675 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.file
11665692 -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 autorisations de fichiers (lrwxrwxrwx vs -rw-r--r-- ) sont différents , même si le softlink.file a le même contenu que source.file . Par conséquent, il est prouvé que le lien symbolique ne partage pas le même numéro d'inode et les mêmes autorisations que le fichier d'origine.

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

$ rm source.file

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

$ cat softlink.file

Exemple de résultat :

cat: softlink.file: No such file or directory

Comme vous le voyez ci-dessus, il n'y a pas de fichier ou de répertoire appelé softlink.file après avoir supprimé le fichier d'origine (c'est-à-dire source.file ).

Nous comprenons donc maintenant que le lien symbolique n'est qu'un lien pointant vers le fichier d'origine. Le lien symbolique 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 symbolique, le fichier d'origine sera toujours disponible.

Suggestion de lecture :

  • Comment répertorier les liens symboliques sous Linux
  • Comment trouver des liens symboliques brisés et les supprimer sous Linux

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

$ echo "Welcome to OSTechNix" >source.file

Laissez-nous vérifier le contenu du fichier.

$ cat source.file
Welcome to OSTechNix

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

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

$ ln source.file hardlink.file

Vérifiez le contenu de hardlink.file :

$ cat hardlink.file
Welcome to OSTechNix

Vous voyez le hardlink.file affiche les mêmes données que source.file.

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

$ ls -lia

Exemple de résultat :

total 16
11665675 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.file
11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

Maintenant, nous voyons que les deux hardlink.file et source.file ont le même numéro d'inodes (11665692 ) et autorisations de fichiers (-rw-r--r-- ) . Par conséquent, il est prouvé que le fichier de lien physique partage le même numéro d'inodes et les mêmes autorisations que le fichier d'origine.

Attention : Si nous modifions les permissions sur source.file , la même autorisation sera appliquée au hardlink.file aussi.

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

$ rm source.file

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

$ cat hardlink.file

Exemple de résultat :

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 lien dur partage le même numéro d'inode, les autorisations et les données du fichier d'origine.

Alors, quelle est la différence entre le lien physique et le fichier copié normal ?

Vous vous demandez peut-être pourquoi créer un lien physique alors que nous pouvons facilement copier/coller le fichier original ? Créer un lien physique vers un fichier est différent de le copier.

Si vous copiez un fichier, il ne fera que dupliquer le contenu. Ainsi, si vous modifiez le contenu d'un fichier (soit original, soit lien physique), cela n'a aucun effet sur l'autre.

Cependant, si vous créez un lien physique vers un fichier et modifiez le contenu de l'un des fichiers, le changement sera visible sur les deux.

Jetons un coup d'œil au fichier source.

$ cat source.file 
Welcome to OSTechNix

Le fichier source a une seule ligne qui dit - Bienvenue sur OSTechNix.

Ajoutez une nouvelle ligne, par exemple "Welcome to 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 OSTechNix
Welcome to Linux
$ cat source.file 
Welcome to OSTechNix
Welcome to Linux

Voir? Les changements que nous venons d'apporter sur source.file sont mis à jour dans les deux fichiers. Signification - les deux fichiers (source et lien physique) se synchronisent.

Quelles que soient les modifications que vous apportez à un fichier, elles seront répercutées sur l'autre. Si vous copiez/collez normalement le fichier, vous ne verrez aucune nouvelle modification dans un autre fichier.

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

$ man ln

Conclusion

Dans ce guide, nous avons expliqué ce qu'est un lien symbolique et un lien physique sous Linux, comment créer un lien symbolique et un lien physique avec des exemples de commandes et enfin, nous avons expliqué la différence entre un lien physique et un fichier copié normal.

J'espère que vous avez une idée de base de l'utilisation des liens symboliques ou symboliques et des liens physiques sous Linux.


Linux
  1. Commande de tri sous Linux avec des exemples

  2. Liens physiques et liens souples sous Linux expliqués

  3. Comment créer des liens souples et physiques sous Linux

  4. Qu'est-ce que les liens souples et les liens durs dans le système de fichiers Linux

  5. Différence entre les liens symboliques et les liens physiques sous Linux

La commande ln sous Linux :créer des liens logiciels et matériels

Utilisation de la commande Linux mv avec des exemples

Commande de montage Linux avec exemples

Commande Linux gawk avec exemples

Linux make Commande avec des exemples

Liens matériels et liens logiciels sous Linux :tout ce que vous devez savoir