Non, un lien dur est complètement différent. Un lien symbolique est plus proche d'un raccourci Windows (bien qu'il existe des différences importantes, les liens symboliques ressemblent davantage aux raccourcis Windows que ne le sont les liens physiques). Un lien dur est une chose différente et une dont vous n’a presque jamais besoin.
En bref, un lien symbolique est créé avec cette commande:
ln -s foo bar
Si vous courez ensuite ls -l
, vous verrez:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Le ->
moyen qui bar
est un lien vers foo
. Ainsi, l'ouverture bar
, avec un éditeur de texte par exemple, ouvrira le fichier séparé foo
. Cependant, la suppression bar
ne fera que supprimer le raccourci, cela n'affectera pas le fichier foo
.
Les liens durs, en revanche, sont créés avec cette commande:
ln foo bar
Si vous exécutez maintenant ls -l
, il n'y a aucune indication de relation entre les fichiers:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Mais — et c’est très important — c’est en fait le même fichier . Les fichiers sur les systèmes de fichiers Unix sont stockés à l'aide d' inodes ; Un inode est essentiellement la façon dont le système de fichiers mappe un nom de fichier sur un emplacement particulier du disque dur physique. Ainsi, les liens physiques sont des fichiers qui pointent sur le même inode que leur cible. Une autre façon de le dire est que tous les fichiers sont en fait des liens durs pointant vers leurs inodes. Faire un lien physique vers un fichier crée simplement un nouveau pointeur (fichier) sur le système de fichiers qui pointe vers le même inode. Chaque inode peut avoir plusieurs fichiers pointant vers lui, un seul ou aucun.
Pour mieux comprendre cela, utilisez ls -i
l’affichage qui montre l’inode associé à un fichier. Créons un lien symbolique et un lien dur et voyons ce qui se passe:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Maintenant, vérifiez leurs inodes:
Comme vous pouvez le voir ci-dessus, les deux foo
et HardLinkToFoo
ont le même inode (16648029) alors que SoftLinkToFoo en a un différent (16648036).
Que se passe-t-il si nous renommons foo
avec mv foo bar
?
La couleur rouge indique un lien brisé cassé, celui dont la cible ne peut plus être trouvée. Cela est dû au fait que les liens symboliques renvoient au nom du fichier, pas à son inode. Notez qu'en dépit du changement de nom, l'inode reste le même, donc le lien dur fonctionne bien, il fonctionne toujours.
En résumé, les liens physiques sont en réalité deux manifestations du même fichier; Ce sont des pointeurs sur la même section du disque. Les liens symboliques ne sont que des raccourcis. Pour prendre une analogie avec le monde réel, les liens physiques ressemblent à deux numéros de téléphone différents pour la même ligne téléphonique et les liens symboliques, c'est comme avoir deux lignes téléphoniques différentes dans la même maison.