Accueil / Articles PiApplications. / Windows.

Les jonctions NTFS.

Microsoft sous-exploite souvent ses systèmes d'exploitation en sacrifiant sur l'autel du "grand public" des originalités bien pratiques. Parmi ces perles on trouve le système de fichier NTFS.

Introduction aux liens symboliques.

Les systèmes UNIX et Linux intègrent dès leur origine la notion de liens symboliques. Jusqu'à la version 5 de NTFS, seuls les raccourcis Windows pouvaient très partiellement s'y substituer (les raccourcis sont au plan technique un horrible pis-aller).

Tout fichier est constitué de groupes de secteurs (cluster) chaînés entre eux. Ce chaînage permet au système de ne conserver que l'adresse physique sur le disque du premier groupe pour accéder aux suivants et ainsi reconstituer le fichier. Une "table" (région protégée du disque) conserve la liste des fichiers alloués. Cette table se nomme MFT pour NTFS. Très succinctement, un lien symbolique est une entrée dans la table qui pointe vers un fichier déjà alloué. Il est donc possible d'adresser le fichier soit par l'entrée de la table ajoutée à cette dernière lors de la création du fichier, soit par l'entrée du lien symbolique. Il est en outre possible de créer plusieurs liens symboliques sur le même fichier. La suppression d'un des liens ne supprime pas le fichier puisque'il est toujours référencé. Comme un lien symbolique "coûte" peu du point de vue système, ils sont un excellent moyen de protection contre les suppressions accidentelles. Cela fait plus de 30 ans que nous les utilisons sur les systèmes UNIX et Linux.

Capacité initiale des systèmes Windows (depuis Vista).

Avec Windows, il a fallu attendre jusqu'à il y a peu (Windows Vista). La commande fsutil hardlink create <fichier cible> <fichier source> permet de créer de véritables liens symboliques. Attention : ne faites pas de liens symboliques sur les fichiers Microsoft Office. En effet, les logiciels de la suite MS Office créent des fichiers temporaires et transforme les liens symboliques en entrée normale dans la MFT en attribuant au lien un nouveau fichier différent de celui initialement lié. Bien entendu vous n'êtes informé de rien (c'est encore du Microsoft tout craché...).

Alors qu'avec UNIX/Linux, la commande ln fonctionne indifféremment pour les fichiers réguliers ou les répertoires, la commande fsutil hardlink create ne fonctionne pas pour les répertoires. Windows n'offre pas de commande pour le faire alors même que ce système utilise des "jonctions" (voir ci-dessous).

Les jonctions NTFS.

Heureusement, Mark Russinovich (SysInternals) vient à notre secours avec la commande junction. Cette commande (et d'autres) utilise pleinement les capacité de NTFS. Elle permet soit de créer un pseudo lien symbolique sur un répertoire, le supprimer (option -d) ou visualiser sa source. Les jonctions permettent même de créer des liens sur des répertoires "cible" supportés par un lecteur différent des répertoires "source".

Pour créer une jonction, rien de plus simple : junction <répertoire cible> <répertoire source>.

Un exemple d'emploi des jonctions et la création d'un site Web local qui référence des ressources lourdes comme des photos ou des vidéos un peu partout dans le système de fichiers. Les jonctions permettent de "monter" les répertoires qui supportent ces ressources dans l'arborescence du site évitant ainsi un gaspillage important du volume disque tout en permettant de tester le site.

Attention cependant à l'outil utilisé pour publier ce site sur un serveur distant. Tous ne "comprennent" pas forcément les jonctions. Pour notre part nous utilisons le fabuleux outil SynBackPro de 2BrightSparks Pte Ltd pour réaliser nos publications (une cinquantaine d'Euros pour une licence). Par défaut, cet outil ignore les jonctions. Avec sa version 7, vous pouvez imposer la prise en compte des jonctions via l'affichage du profil en mode expert puis : Options de comparaison/Attributs. Dans l'onglet décocher alors "ignorer les points de jonction NTFS (points d'analyse)". Dès lors, les jonctions seront considérées comme des répertoires réguliers.

(c) PiApplications 2016