Comment un chemin devient un fichier
Un système de fichiers range des fichiers sur un disque et retrouve chacun à partir de son chemin, comme /home/ana/notes.txt. Il le fait avec des inodes et des répertoires.
Comprendre cela explique pourquoi renommer un fichier est instantané, et pourquoi deux noms peuvent désigner un seul fichier.
À la fin de cette leçon
Remarque
Je peux expliquer comment le système trouve un fichier à partir de son chemin.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Inode | la fiche d’un fichier : taille, droits, emplacement des blocs | |
| Répertoire | un fichier spécial qui associe des noms à des numéros d’inode | |
| Bloc | un petit morceau du disque qui garde des octets du fichier | |
| Chemin | la suite de noms de la racine jusqu’au fichier | /home/ana/notes.txt |
| Lien physique | un second nom pour un même inode | |
| Racine | le répertoire de départ de tout chemin, noté / |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un inode décrit le fichier sans son nom
Chaque fichier a un inode. Cette fiche contient sa taille, son propriétaire, ses droits et la liste des blocs du disque qui gardent son contenu.
L’inode ne contient pas le nom du fichier. Le système désigne un fichier par son numéro d’inode, comme un employé par son matricule.
Un répertoire liste des noms et numéros
Un répertoire est lui-même un fichier. Son contenu est une liste de paires : un nom, un numéro d’inode. C’est là que vivent les noms.
Renommer un fichier change donc une ligne dans un répertoire. Aucun octet du fichier ne bouge.
Exemple travaillé : trouver /home/ana/notes.txt
| Étape | On lit | On cherche | On trouve |
|---|---|---|---|
| 1 | La racine, d’inode 1, connue d’avance | home | inode 3 |
| 2 | Le répertoire d’inode 3 | ana | inode 4 |
| 3 | Le répertoire d’inode 4 | notes.txt | inode 11 |
| 4 | L’inode 11 | les blocs | le contenu du fichier |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Créer un petit fichier de huit octets
printf 'bonjour\n' > essai.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lui donner un second nom
ln essai.txt essai2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Compter les noms de ce fichier
stat -c '%h' essai.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Les deux noms désignent-ils le même inode ?
test essai.txt -ef essai2.txt && echo ouiAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Deux noms, un seul fichier
Le premier Run n’affiche rien. Le deuxième non plus : ln ajoute une ligne à un répertoire, avec le même numéro d’inode.
Le troisième affiche 2 : l’inode a deux noms. Le quatrième affiche oui : -ef teste que les deux noms mènent au même inode. Le contenu n’existe qu’une fois.
Lire le type d’un chemin
stat -c '%F' /Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Supprimer les deux noms
rm essai.txt essai2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup de gens pensent que rm efface le fichier. Il retire seulement un nom. Le système libère l’inode et les blocs quand plus aucun nom ne reste et qu’aucun processus ne l’utilise.