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.