Linux-Mandrake: Manuel de référence | ||
---|---|---|
Page précédente | Chapitre 10. Le système de fichiers de GNU/Linux: ext2fs (EXTended 2 FileSystem) | Page suivante |
Il nous faut nous confronter à un malentendu très courant, même chez les utilisateurs d'Unix. Celui-ci est, essentiellement, dû au fait qu'on attache la notion de liens (d'ailleurs faussement appelés « liens en dur ») aux fichiers ordinaires uniquement. Nous avons vu que ce n'est aucunement le cas puisque même les liens symboliques sont « liés ». Il nous faudra tout d'abord clarifier ce que sont ces liens symboliques[1].
Les liens symboliques sont des fichiers d'un type particulier dont le seul contenu est une chaîne de caractères arbitraire, qui peut ou non pointer sur un vrai nom de fichier. Quand vous mentionnez un lien symbolique sur la ligne de commande ou dans un programme, vous accédez en fait au fichier sur lequel pointe le lien, s'il existe. Par exemple :
$ echo Bonjour >monfichier $ ln -s monfichier monlien $ ls -il total 4 169 -rw-rw-r-- 1 reine reine 6 déc 10 21:30 monfichier 416 lrwxrwxrwx 1 reine reine 6 déc 10 21:30 monlien -> monfichier $ cat monfichier Bonjour $ cat monlien Bonjour |
On constatera, d'une part, que le type du fichier monlien est 'l' (les droits d'accès à un lien symbolique n'ont aucune signification : ils seront toujours rwxrwxrwx) ; et d'autre part, qu'il s'agit d'un fichier distinct de monfichier, parce que son numéro d'i-nœud est différent. Mais il se réfère au fichier monfichier de façon symbolique. Ainsi, lorsque vous tapez cat monlien, vous affichez en fait le contenu du fichier monfichier. Pour démontrer qu'un lien symbolique contient une chaîne arbitraire, nous pouvons faire ceci :
$ ln -s "Je n'existe pas" unautrelien $ ls -il unautrelien 747 lrwxrwxrwx 1 reine reine 15 déc 15 18:01 unautrelien -> Je n'existe pas $ cat unautrelien cat: unautrelien: Aucun fichier ou répertoire de ce type $ |
Si les liens symboliques existent, c'est parce qu'ils peuvent se libérer de certaines limites imposées aux liens normaux (« en dur ») :
deux fichiers qui existent sur des systèmes de fichiers distincts ne peuvent être liés ; et ceci pour une raison bien simple : le compteur de liens est stocké dans l'i-nœud lui-même, et les i-nœuds ne peuvent être partagés par plusieurs systèmes de fichiers. Les liens symboliques, quant à eux, le permettent;
deux répertoires ne peuvent être liés car, comme nous l'avons vu, le compteur de liens pour un répertoire possède un usage particulier. Cependant, on pourra faire pointer un lien symbolique sur un répertoire et l'utiliser comme s'il s'agissait vraiment d'un répertoire.
Les liens symboliques sont souvent d'une très grande utilité dans de nombreuses situations. Cependant, il est fréquent de les voir utiliser pour lier des fichiers qui pourraient l'être par un lien normal. Pourtant, l'avantage de ce dernier est qu'il empêche la perte du fichier lorsque l'« original » est effacé.
Et puis, pour finir, vous aurez remarqué que la taille d'un lien symbolique correspond tout simplement à... la taille de la chaîne de caractères.
[1] | En anglais, les liens symboliques sont aussi appelés « soft links », tandis que les liens normaux sont appelés (toujours faussement) « hard links », ce qui donne l'expression française (toujours aussi fausse) de liens « en dur ». |
Page précédente | Début | Page suivante |
Les fichiers « spéciaux » : fichiers mode bloc et caractère | Remonter | Les attributs des fichiers |