Qu'est-ce que le lien logiciel et le lien physique sous Linux ?
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
Comment créer un lien physique
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.