Non, un lien dur est complètement différent. Un lien souple est plus proche d'un raccourci Windows (bien qu'il y ait des différences importantes, les liens symboliques sont plus proches des raccourcis Windows que les liens durs). Un lien dur est une chose différente dont vous n'aurez pratiquement jamais besoin.
En bref, cette commande permet de créer un lien souple :
ln -s foo bar
Si vous exécutez 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
En ->
signifie que bar
est un lien vers foo
. Ainsi, l'ouverture bar
avec un éditeur de texte par exemple, ouvrira en fait le fichier séparé foo
. Toutefois, la suppression de bar
supprimera simplement le raccourci, sans affecter le fichier. foo
.
Les liens en dur, quant à eux, sont créés avec cette commande :
ln foo bar
Si vous exécutez maintenant ls -l
Il n'y a aucune indication d'une quelconque relation entre les dossiers :
-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 - il s'agit en fait de le même fichier . Les fichiers des systèmes de fichiers Unix sont stockés à l'aide de inodes ; un inode est essentiellement la manière dont le système de fichiers associe un nom de fichier à un emplacement particulier sur le disque dur physique. Ainsi, les liens durs sont des fichiers qui pointent vers vers le même inode comme cible. En d'autres termes, il s'agit de todos sont en fait des liens durs pointant vers leurs inodes. L'établissement d'un lien dur 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, utilisez ls -i
qui indique l'inode associé à un fichier. Créons un lien souple 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
y 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
con mv foo bar
?
La couleur rouge indique un lien souple brisé, c'est-à-dire un lien dont la cible ne peut plus être trouvée. En effet, les liens logiciels pointent vers le nom d'un fichier, et non vers son inode. Notez que malgré le changement de nom, l'inode reste le même, donc le lien dur est correct, il fonctionne toujours.
En résumé, les liens durs sont en fait deux manifestations de la même Ce sont des pointeurs vers la même section du disque. Les soft links ne sont que des raccourcis. Pour prendre une analogie avec le monde réel, les liens en dur sont comme deux numéros de téléphone différents pour la même ligne téléphonique et les liens logiciels sont comme deux lignes téléphoniques différentes dans la même maison.