Lien symboliqueUn lien symbolique (en anglais soft link, symbolic link ou symlink par troncation) est une entrée spéciale de répertoire dans les systèmes Unix ou type Unix modernes qui permet de référencer de manière quasi transparente d'autres entrées de répertoire, typiquement, des fichiers ordinaires ou des répertoires, y compris sur des volumes de stockage différents (ce que ne permettait pas un lien ordinaire). Il se comporte comme un alias d'un fichier ordinaire ou d'un répertoire. On appelle déréférencement l'action du système d'exploitation consistant à remplacer à la volée le nom du lien symbolique par celui qu'il pointe. L'appel système permettant de retrouver le fichier pointé par le lien est readlink[1]. UtilisationSous un système Unix, les liens symboliques sont créés par la présence de l'option ln -s nom_du_fichier_pointé nom_du_lien_symbolique Sous Windows et uniquement sur une partition NTFS[2], les liens symboliques sont créés par la présence de l'option /D dans une invite de commandes ; toutefois, il y a une inversion entre le lien et la cible (par rapport à la commande MKLINK /D nom_du_lien_symbolique nom_du_fichier_pointé Bien que l'ordre des arguments ressemble à celui des commandes Avec la version GNU de cp -s nom_du_fichier_pointé nom_du_lien_symbolique La plupart des opérations (lecture, écriture, exécution) sur un lien symbolique le déréférencent automatiquement et opèrent sur sa cible (le fichier réel). La suppression ( Un lien symbolique a toujours les mêmes droits d'accès que le fichier sur lequel il pointe. En réalité, les droits d'accès indiqués pour un lien symbolique sont sans signification. La commande La commande d'affichage de contenu de répertoire lrwxrwxrwx 1 root root 9 2005-08-26 21:47 python -> python2.3
Le Contrairement aux liens physiques, les liens symboliques peuvent pointer sur des fichiers ordinaires, des répertoires, sur eux-mêmes ou sur des cibles qui n'existent pas (l'existence du nom_du_fichier_pointé n'est même pas vérifiée lors de la création du lien par la commande Les liens symboliques peuvent être source de mauvaises surprises aux débutants, car ils donnent l'impression qu'un fichier est présent de multiples fois dans l'arborescence du système de fichiers. Une suppression de la cible faite dans l'illusion que ce même fichier existe ailleurs (alors que ce ne sont que des liens), conduit alors à la perte définitive du fichier, et casse instantanément tous les liens symboliques qui pointaient dessus. Certains vieux programmes, créés alors que les liens n'existaient pas, peuvent avoir des conséquences assez catastrophiques quand ils sont confrontés à des liens, qu'ils soient symboliques ou physiques. Dans le meilleur des cas, ils peuvent tomber dans une boucle sans fin en tentant de suivre indéfiniment une arborescence liée sur elle-même. Au pire, la suppression d'un lien symbolique pointant sur un répertoire conduira à la suppression du contenu du répertoire lié. Fort heureusement, la gestion des liens par Unix est assez ancienne, et il est peu probable de rencontrer de tels programmes. Cependant, cela n'empêche pas le système de se protéger en interdisant, par exemple, la suppression d'un lien symbolique pointant sur un répertoire au moyen de la commande StockageLes premières implémentations des liens symboliques traitaient les informations concernant le fichier pointé comme les données d'un fichier ordinaire. Ce fichier ordinaire contenait juste la chaîne de caractères représentant le nom du fichier pointé et seul un drapeau indiquait au système de ne pas ouvrir ce fichier, mais celui dont le nom y était indiqué. Cette méthode a l'avantage d'être simple à réaliser mais présente cependant deux inconvénients. Premièrement, chaque ouverture d'un fichier via un lien symbolique ouvre en réalité deux fichiers, et même plus si le chemin d'accès au fichier est lui-même constitué de liens symboliques. Ces ouvertures multiples ralentissent le système. Deuxièmement, les quelques octets nécessaires au stockage du nom du fichier pointé étant considérés comme un fichier, ils occupent la place d'une unité d'allocation complète sur le disque, ce qui entraine un gaspillage de l'espace de stockage. Cette première implémentation a été rétroactivement appelée slow symlink. Une évolution appelée fast symlink est à la fois plus rapide et moins dispendieuse en capacité de stockage. Elle consiste à stocker la chaîne de caractères représentant le nom du fichier pointé dans une zone supplémentaire de l'inode. Ceux-ci contenant les informations vitales du système de fichiers, ils sont souvent utilisés par le système, qui les maintient donc en mémoire centrale pour leur garantir un accès immédiat. Le nom du fichier pointé faisant partie de cette structure, il bénéficie lui aussi de cet accès rapide en mémoire, ce qui accélère grandement son déréférencement. Cependant, le système peut se replier sur l'ancienne méthode (lente) si la longueur de la chaîne de caractères dépasse les capacités limitées de stockage d'un inode. Autres systèmes d'exploitation
Notes et références
Voir aussiArticles connexesLiens externes |