Supposons que je crée simplement le répertoire newDirectory, puis que je lance la commande ls -ld. Je vois que le nombre de liens durs est de 2. Qu'est-ce qui fait exactement le lien dur 2 dès le départ ? De plus, le nombre de sous-répertoires dans le répertoire courant est-il égal au nombre de liens physiques – 2 ?
Réponse acceptée :
Historiquement, le premier système de fichiers Unix créait deux entrées dans chaque répertoire :. pointant vers le répertoire lui-même, et .. pointant vers son parent. Cela a fourni un moyen facile de traverser le système de fichiers, à la fois pour les applications et pour le système d'exploitation lui-même.
Ainsi, chaque répertoire a un nombre de liens de 2+n où n est le nombre de sous-répertoires. Les liens sont l'entrée de ce répertoire dans son parent, le propre . du répertoire l'entrée, et le .. entrée dans chaque sous-répertoire. Par exemple, supposons qu'il s'agisse du contenu de la sous-arborescence enracinée à /parent , tous les répertoires :
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Puis dir a un nombre de liens de 5 :le dir saisie dans /parent , le . entrée dans /parent/dir , et les trois .. entrées dans chacun des /parent/dir/sub1 , /parent/dir/sub2 et /parent/dir/sub3 . Depuis /parent/dir/sub1 n'a pas de sous-répertoire, son nombre de liens est 2 (le sub1 entrée dans /parent/dir et le . entrée dans /parent/dir/sub1 ).
Pour minimiser la quantité de casse spéciale pour le répertoire racine, qui n'a pas de "propre" parent, le répertoire racine contient un .. entrée pointant vers elle-même. De cette façon, il a également un nombre de liens de 2 plus le nombre de sous-répertoires, les 2 étant /. et /.. .
Les systèmes de fichiers ultérieurs ont eu tendance à garder une trace des répertoires parents en mémoire et n'ont généralement pas besoin de . et .. exister en tant qu'entrées réelles ; les systèmes Unix modernes typiques traitent . et .. comme valeurs spéciales dans le cadre du code de système de fichiers indépendant du type de système de fichiers. Certains systèmes de fichiers incluent toujours . et .. entrées, ou faire semblant même si rien n'apparaît sur le disque.
La plupart des systèmes de fichiers signalent toujours un nombre de liens de 2+n pour les répertoires, que . et .. des entrées existent, mais il y a des exceptions, par exemple btrfs ne le fait pas.