Les différentes sortes de liens
Symbolic links
Links

bestand-X a deux liens entrants

Hard link
(lien matériel)

Le lien matériel pointe vers l'emplacement du fichier. Quand on demande le contenu du fichier, le système d'exploitation décode l'adresse dans le répertoire et va chercher les données du fichier. Un lien matériel ne peut pointer que vers un fichier sur le même volume.

Certains système compatibles POSIX permettent des liens multiples vers un fichier. Quel que soit le chemin parcouru, ce sont les même données. Cette fonction est plus utilisée sur les systèmes Unix que Windows.

Linux (et son système de fichiers EXT) ne stockent pas l'adresse du fichier dans le répertoire. Le répertoire ne contient que le nom du fichier et un numéro d'inode. Un inode est associé à chaque fichier physique et contient les paramètres du fichiers dans un tableau: adresse des données, longueur des données, horodatage, droits d'accès et nombre de liens pointant vers le fichier.

Les liens matériels sont tous équivalents. Il n'y a pas de "lien principal". Les liens matériels fonctionnent de manière transparente pour les applications.

Quand on efface un fichier qui a plusieurs liens matériels, on n'efface que le lien correspondant. Le compteur du nombre de liens est réduit d'une unité, et quand le nombre tombe à zéro la place utilisée par le fichier est libérée.

Dans notre exemple le fichier-x (bestand-x) a deux liens matériels:

  • /documenten/bestand-x et
  • /documenten/fotos/2011/bestand-x


Un raccourci link est un fichier qui pointe vers un autre fichier

Softlink
(raccourcis)

Un raccourcis est un fichier qui pointe vers un autre fichier. Le meilleur exemple sont les raccourcis qui se trouvent sur le poste de travail (desktop). Les raccourcis sont un fichier de type ".lnk" qui pointent vers le nom effectif du fichier. Le fichier effectif peut se trouver sur un autre volume.

L'avantage d'un raccourcis est de permettre d'accéder à un fichier via une multitude de chemins. Les fichiers de type "lien" sont petits et peuvent être repris dans de nombreux répertoires (par exemple dans le répertoire "programmes" de tous les utilisateurs). Le programme lui-même n'existe qu'une fois.

La transformation d'un raccourcis en nom du fichier s'appèlle le déréférencement. Une des particularités de Windows qui utilise ces raccourcis est que le déréférencement est effectué par l'interface graphique, et non par le système d'exploitation. Hors de l'interface graphique, le raccourcis est un simple fichier. Il faut coder soi-même les opérations de déréférencement pour accéder au fichier définitif. Les raccourcis ne sont donc pas transparents pour l'utilisateur.

Le raccourcis link.lnk ne contient pas l'adresse physique du fichier, mais une adresse, par exemple /programs/adobe/photoshop/photoshop.exe. Il n'est pas possible de modifier directement le fichier .lnk (le raccourcis) avec un éditeur de texte: le contenu est hexadécimal.

Quand on efface le fichier effectif, on n'efface pas le raccourcis, qui pointe maintenant vers un fichier inexistant.

Les raccourcis correspondent aux slow symlinks du monde Unix.

Dans notre exemple, le fichier photoshop.exe n'a qu'un seul chemin: /programs/adobe/photoshop/photoshop.exe
/users/marc/desktop/link n'est qu'un raccourcis, un fichier qui pointe vers le fichier effectif.


/documents and settings/marc/documents/
contient un lien symbolique vers le fichier:
le répertoire contient le chemin du fichier,
pas son adresse physique

Symbolic link

Les liens symboliques évitent les inconvénients des raccourcis (le déréférencement n'est effectué que par l'interface graphique).

Au lieu de contenir l'adresse effective du fichier (adressage physique selon les flèches noires), l'élément de répertoire contient le nom du fichier. Cela n'est évidemment possible qu'avec les systèmes de fichiers qui ont une structure "molle" sous forme de base de données (NTFS) et non une structure figée sous forme de tableau à longueur d'éléments fixe (FAT). Le format EXT place le lien symbolique dans le inode (fast symlink). Il s'agit donc d'un inode spécial qui n'a pas de fichier correspondant!

Le déréférencement s'effectue automatiquement, contrairement aux raccourcis. Il y a une différence entre les liens symboliques et les liens matériels: quand on efface le fichier, on se retrouve ici aussi avec des liens symboliques qui pointent nulle part.

Les liens symboliques sont brutalement apparus sous Vista, quand Microsoft a complètement chamboulé la structure de ses fichiers. Les fichiers symboliques fonctionnent (ce qui est un tour de force pour microsoft), mais n'ont pas toutes les fonctionalités du monde Unix qui utilise les liens symboliques depuis les premières versions du système d'exploitation.

En fait, Microsoft a simplement voulu donner les même fonctionalités aux utilisateurs, alors que les fichiers effectifs ne se trouvent plus aux même endroits. Les documents se trouvaient dans les versions précédentes dans le répertoire

  • /documents and settings/<utilisateur>/documents
Ces mêmes documents se retrouvent maintenant dans
  • /users/<utilisateur>/documents
La plupart des programmes utilisent des liens "hard coded" (codés à vie dans le logiciel) et non des paramètres de substitution du genre %HOMEPATH% comme Bill l'avait pourtant demandé à maintes reprises. C'est pour éviter que les programmes ne cessent de fonctionner que ces liens symboliques ont vu le jour. Le lien symbolique se trouve là où le répertoire était sensé se trouver, et pointe vers le nouvel emplacement.

Notez que l'explorateur windows ne montre pas les liens symboliques (Ubuntu montre un symbole de déréférencement). J'au donc monté mon disque dur dans un ordinateur Linux (Ubuntu). c:\Documents and Settings\User\Mijn documenten (j'utilise ici la nomenclature windows) pointe en fait vers c:\Users\User\Documents\ (l'emplacement actuel des documents). La partition microsoft se trouve dans l'arborescence /media/vista/

Microsoft est maintenant fou de liens symboliques. Si tu copies le contenu d'un répertoire vers une clef USB, il est possible que microsoft place un lien symbolique sur la clef au lieu de copier les fichiers (cela était le cas avec Vista avant SP1).

Les liens symboliques sont fortement apparentés aux raccourcis. Tous deux utilisent le nom effectif du fichier au lieu de son adresse physique. Dans les deux cas, des liens peuvent exister alors que le fichier correspondant n'existe plus.

La représentation qui est donnée ici est très simplifiée. Les répertoires contiennent plus d'informations qu'un lien vers le fichier (sous Unix toutes les informations sur le fichier sont reprises dans l'inode du fichier). Des structures supplémentaires sont nécessaires pour stocker l'état du système (liste des blocs disponibles, par exemple).