+++ to secure your transactions use the Bitcoin Mixer Service +++

 

Les Liens NTFS
Points d'Analyse, Jonctions, Liens Symboliques, Liens R�els
Reparse Points, Junctions, Symbolic Links, Hard Links, Soft Links

On connaissait d�j� les Liens NTFS sous XP, mais leur utilisation restait confidentielle. Avec Vista toute la panoplie est livr�e accompagn�e d'une commande d�di�e : mklink. On va voir comment Vista et Windows 7 abusent du proc�d�. Cela peut-il servir au particulier ? On peut raccourcir des chemins d'acc�s, r�soudre des cas particuliers. L'utilisation la plus populaire est de d�localiser des dossiers syst�mes, �a permet d'all�ger la partition Windows si elle devient limite. On verra dans la conclusion qu'on peut faire des liens relatifs, tr�s pratiques dans les volumes amovibles susceptibles de changer de lettre. Il faut prendre en compte cette pr�sence de Jonctions dans le syst�me si on veut faire des sauvegardes. Il ne faut pas lever les protections de ces Jonctions (attributs et ACL) sous peine de quelques surprises.

Nouveau : Liens R�els et Symboliques - brillant r�sum� r�dig� par freeAvvArea

Sommaire

 

D�finitions

Reparse Points
How NTFS Works
NTFS Reparse Points
Reparse points are files or directories that have blocks of data called reparse data associated with them.
Pour le NTFS (New Technology File System) les dossiers et fichiers sont des objets. Ces objets ont des propri�t�s, comme par exemple les noms courts, les noms longs, les attributs, les flux. Mais le principe va beaucoup plus loin, on parle de Filtres, de Tags, et de Points d'Analyse, qui est le terme habituellement adopt� pour Reparse Points. Ces Points d'Analyse sont �crits dans la MFT (Master File Table).
Points d'analyse
Les programmes peuvent intercepter les op�rations d'ouverture des objets du syst�me de fichiers et ex�cuter leur propre code avant de retourner les donn�es du fichier. On peut s'en servir pour �tendre les fonctionnalit�s du syst�me de fichiers comme les points de montage qui peuvent servir � rediriger les donn�es lues et �crites dans un dossier vers un autre volume ou disque physique.

Liens NTFS
Les Liens NTFS repr�sentent une partie de cette technologie et permettent des redirections de fichiers au niveau NTFS, alors que les raccourcis (.LNK) habituels font de la redirection via le Syst�me d'Exploitation.

Liens R�els
NTFS permet d'associer plusieurs noms � un fichier. Les Liens R�els ou Hard Links sont appel�s ainsi car ils pointent directement vers les octets du fichier pris pour cible. Ils sont ainsi tr�s r�sistants car on ne peut supprimer accidentellement cette liaison. D�placer ou supprimer le fichier pris originellement pour cible n'a aucun effet, et il faudra supprimer tous les liens r�els pour supprimer le fichier. Les Liens r�els ne peuvent pointer vers un fichier situ� sur un autre volume.

Soft Links
Par opposition aux Hard Links, les redirections Soft Links sont moins solides : si on d�place ou supprime la cible, le lien est rompu. Les Jonctions et les Liens Symboliques sont des Soft Links.

Jonctions
Redirection NTFS vers un dossier. Le chemin est absolu, la cible peut �tre situ�e sur un autre volume mais pas sur le r�seau. Les Jonctions font double-emploi avec Les Liens Symboliques mais sont conserv�s par souci de compatibilit�.

Liens Symboliques
Ce sont des Jonctions � un sens plus large. Les Liens Symboliques peuvent pointer autant des fichiers que des dossiers. Comme pour les Jonctions la cible peut �tre situ�e sur un autre volume. � la diff�rence des Jonctions la cible peut �tre un objet du r�seau. Le lien peut �tre relatif (exemple : ..\ailleurs\cible.txt) ou absolu (d:\ailleurs\cible.txt)

Points de montage
Les points de montage permettent de monter un volume en tant que dossier, au lieu de lui attribuer une lettre. Ceci permet de s'affranchir du nombre limit� de lettres ou de ne pas encombrer le Poste de Travail. On peut d�signer un volume � la fois par une lettre et un nom de dossier. Voir le Gestionnaire de disques (WIN+R, diskmgmt.msc)

 

Mise en �vidence des Liens NTFS dans Vista et Win7

Si on ouvre dans l'explorateur de fichiers le dossier c:\Utilisateurs\NomduProfil � priori tout semble normal.

http://fspsa.free.fr/ng/jonctions-cachees.gif

 

Mise en �vidence des Jonctions et Liens Symboliques

Mais si on affiche les fichiers cach�s et les fichiers syst�mes (Afficher tous les fichiers), on voit des icones de dossiers affubl�s de fl�ches de raccourci. La plupart retournent un message d'interdiction d'acc�s quand on les clique. Ce sont des Jonctions.

http://fspsa.free.fr/ng/jonctions-visibles.gif

Pour ouvrir une Console de Commandes, le moyen le plus universel est d'entrer cmd dans Ex�cuter : WIN+R, cmd, Entr�e. Pour info avec Vista/W7 on utilise CTL+MAJ+Entr�e pour ouvrir la Console en Mode Administrateur.

La commande DIR liste les fichiers et dossiers. Entrer dir /? pour voir son utilisation. Ses commutateurs permettent d'obtenir diff�rentes pr�sentations. Par exemple /S permet de lister les sous-dossiers, alors que /A permet de choisir de sp�cifier des Attributs. Par exemple /AL va afficher seulement les Liens NTFS, et /A-L va au contraire afficher tout sauf ces Points d'Analyse.

DIR /AL /S permet de ressortir les Liens NTFS de types <JONCTION> ou <SYMLINKD> (Lien Symbolique).
Le r�sultat de la commande a �t� expurg� des informations inutiles pour plus de clart�.
L'affichage du nom donn� au Lien est suivi du chemin vers sa cible :

C:\Users\JF>cd\

C:\>dir /AL /S

R�pertoire de C:\
<JONCTION> Documents and Settings [C:\Users]

R�pertoire de C:\Program Files
<JONCTION> Fichiers communs [C:\Program Files\Common Files]

R�pertoire de C:\Program Files\Windows NT
<JONCTION> Accessoires [C:\Program Files\Windows NT\Accessories]

R�pertoire de C:\ProgramData
<JONCTION> Application Data [C:\ProgramData] ***
<JONCTION> Bureau [C:\Users\Public\Desktop]
<JONCTION> Desktop [C:\Users\Public\Desktop]
<JONCTION> Documents [C:\Users\Public\Documents]
<JONCTION> Favoris [C:\Users\Public\Favorites]
<JONCTION> Favorites [C:\Users\Public\Favorites]
<JONCTION> Menu D�marrer [C:\ProgramData\Microsoft\Windows\Start Menu]
<JONCTION> Mod�les [C:\ProgramData\Microsoft\Windows\Templates]
<JONCTION> Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
<JONCTION> Templates [C:\ProgramData\Microsoft\Windows\Templates]

R�pertoire de C:\ProgramData\Microsoft\Windows\Start Menu
<JONCTION> Programmes [C:\ProgramData\Microsoft\Windows\Start Menu\Programs]

R�pertoire de C:\Users
<SYMLINKD> All Users [C:\ProgramData]
<JONCTION> Default User [C:\Users\Default]

R�pertoire de C:\Users\All Users
<JONCTION> Application Data [C:\ProgramData]
<JONCTION> Bureau [C:\Users\Public\Desktop]
<JONCTION> Desktop [C:\Users\Public\Desktop]
<JONCTION> Documents [C:\Users\Public\Documents]
<JONCTION> Favoris [C:\Users\Public\Favorites]
<JONCTION> Favorites [C:\Users\Public\Favorites]
<JONCTION> Menu D�marrer [C:\ProgramData\Microsoft\Windows\Start Menu]
<JONCTION> Mod�les [C:\ProgramData\Microsoft\Windows\Templates]
<JONCTION> Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
<JONCTION> Templates [C:\ProgramData\Microsoft\Windows\Templates]

R�pertoire de C:\Users\All Users\Microsoft\Windows\Start Menu
<JONCTION> Programmes [C:\ProgramData\Microsoft\Windows\Start Menu\Programs]

R�pertoire de C:\Users\Default
<JONCTION> Application Data [C:\Users\Default\AppData\Roaming]
<JONCTION> Cookies [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Cookies]
<JONCTION> Local Settings [C:\Users\Default\AppData\Local]
<JONCTION> Menu D�marrer [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu]
<JONCTION> Mes documents [C:\Users\Default\Documents]
<JONCTION> Mod�les [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Templates]
<JONCTION> My Documents [C:\Users\Default\Documents]
<JONCTION> NetHood [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Network Shortcuts]
<JONCTION> PrintHood [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Printer Shortcuts]
<JONCTION> Recent [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Recent]
<JONCTION> SendTo [C:\Users\Default\AppData\Roaming\Microsoft\Windows\SendTo]
<JONCTION> Start Menu [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu]
<JONCTION> Templates [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Templates]
<JONCTION> Voisinage d'impression [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Printer Shortcuts]
<JONCTION> Voisinage r�seau [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Network Shortcuts]

R�pertoire de C:\Users\Default\AppData\Local
<JONCTION> Application Data [C:\Users\Default\AppData\Local]***
<JONCTION> Historique [C:\Users\Default\AppData\Local\Microsoft\Windows\History]
<JONCTION> History [C:\Users\Default\AppData\Local\Microsoft\Windows\History]
<JONCTION> Temporary Internet Files [C:\Users\Default\AppData\Local\Microsoft\Windows\Temporary Internet Files]


R�pertoire de C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu
<JONCTION> Programmes [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs]


R�pertoire de C:\Users\Default\Documents
<JONCTION> Ma musique [C:\Users\Default\Music]
<JONCTION> Mes images [C:\Users\Default\Pictures]
<JONCTION> Mes vid�os [C:\Users\Default\Videos]
<JONCTION> My Music [C:\Users\Default\Music]
<JONCTION> My Pictures [C:\Users\Default\Pictures]
<JONCTION> My Videos [C:\Users\Default\Videos]

Etc. Idem avec les autres comptes...
 

Les Liens NTFS p�sent z�ro octet. En effet ces Liens ne sont pas des fichiers comme les raccourcis LNK et les URL, �a se passe ailleurs (dans l'index).

Noter l'exception pour  C:\Users\All Users  qui n'est pas une Jonction mais un Lien Symbolique absolu vers un dossier. Un Lien Symbolique peut pointer un objet situ� sur le r�seau.

Rep�r�es par des *** sont les deux surprises du proc�d� : des Jonctions qui pointent sur leurs conteneurs. Ces Liens sont normalement cach�s, mais ils ont aussi �t� rendus inaccessibles pour �viter les ph�nom�nes de r�cursivit� dans Explorer :

http://fspsa.free.fr/ng/application-data-acces-refuse.gif

Liens R�cursifs
La pr�sence de ces particularit�s entraine une certaine incompr�hension d'utilisateurs cherchant � faire des sauvegardes avec des logiciels inadapt�s, ou oubliant le commutateur ad�quat dans la commande. Vous trouverez des illustrations de ces ph�nom�nes de r�cursivit� ici :

C:\Documents and Settings\All Users\Microsoft c'est kifkif C:\ProgramData\Microsoft
La vue suivante montre que la pr�sence de ces Jonctions fait que si on essaie d'acc�der directement � C:\Documents and Settings\All Users\Microsoft on abouti en fait en C:\ProgramData\Microsoft. Ceci illustre parfaitement le m�canisme des Jonctions. Toute modification dans un dossier appara�t dans l'autre, car il s'agit ni plus ni moins que du m�me dossier, C:\ProgramData\Microsoft. L'autre chemin qui utilise Documents and Settings n'est qu'un artifice.

Supposons qu'un vieux programme (mal) �crit pour XP ait besoin d'acc�der en dur � C:\Documents and Settings\All Users\Application Data\Microsoft : il va fonctionner comme s'il �tait dans Windows XP gr�ce au leurre introduit par l'utilisation des Jonctions. Les Jonctions aident � pr�server la compatibilit� m�me avec des programmes ou des scripts qui font malheureusement appel � des chemins en dur au lieu d'utiliser les variables d'environnement.
Merci � Serge N. pour la r��criture de ce paragraphe.

http://fspsa.free.fr/ng/vista-jonctions.gif

Jonctions?>
Pour chercher plus facilement <JONCTION> et <SYMLINKD> voici un fichier reg � fusionner au registre pour ajouter une commande [Jonctions?>] dans le menu contextuel des objets. On obtiendra en un clic le r�sultat vu plus haut.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Jonctions?>\command]
@="cmd /k dir /AL /S"

 

Mise en �vidence des Liens R�els

Rien ne distingue dans Explorer les Liens R�els, des fichiers standards. On utilisera donc Link Shell Extension pour les marquer d'un symbole particulier. Une fois Link Shell Extension install�, une petite visite dans windows, system32, et winsxs, sera une r�v�lation.
Comme ci-dessus pour les Jonctions et les Liens Symboliques, il est possible d'ajouter un item dans le menu contextuel des fichiers pour lister les �ventuels Liens R�els ; voir HardLinks?>

 

Agencement du dossier Utilisateurs

On a vu que le bien connu "Documents and Settings" de Windows XP est devenu le dossier" Utilisateurs", de son vrai nom "Users" comme il appara�t dans une Console CMD. Pour des raisons de compatibilit� "Documents and Settings" existe toujours, mais sous la forme d'une Jonction vers  Users. Quand on clique sur la Jonction "Documents and Settings", un d�sagr�able message "Acc�s refus�" nous invite � aller voir ailleurs. Il faut en effet rompre avec les anciennes habitudes. Maintenant c'est "Users".

Et il en est de m�me dans "Users" pour le dossier "All Users" remplac� par "c:\ProgramData" et le dossier "Default Users" devenu "c:\Users\Default". On pourrait penser qu'il y a une volont� de supprimer les espaces dans les noms ; mais ce n'est pas le cas, comme le confirme l'examen du contenu des profils dans le tableau ci-dessous. Par ailleurs le vrai nom de "c:\Programmes" est rest� "c:\Program Files". Cette francisation "Programmes" est obtenue par le m�me artifice que pour Utilisateurs, � savoir un fichier cach� et syst�me : les fameux Desktop.ini

�volution des profils

Windows XP

Nom anglophone

Vista/W7

    Entre parenth�ses : nom v�ritable du dossier
  AppData AppData
Application Data   AppData\Roaming
Bureau Desktop Bureau (Desktop)
Cookies Cookies AppData\Roaming\Microsoft\Windows\Cookies
Favoris Favorites Favoris (Favorites)
Local Settings Local Settings AppData\Local
Local Settings\Application Data Application Data AppData\Local
Local Settings\Historique History AppData\Local\Microsoft\Windows\History
Local Settings\Temp Temp AppData\Local\Temp
Local Settings\Temporary Internet Files Temporary Internet Files AppData\Local\Microsoft\Windows\Temporary Internet Files
Menu D�marrer Start Menu AppData\Roaming\Microsoft\Windows\Menu D�marrer (Start Menu)
Menu D�marrer\Programmes Programs AppData\Roaming\Microsoft\Windows\Start Menu\Programmes (Programs)
Menu D�marrer\Programmes\D�marrage Startup AppData\Roaming\Microsoft\Windows\Start Menu\Programs\D�marrage (Startup)
Mes Documents My Documents Documents
Mes documents\Ma musique My Music Musique (Music)
Mes documents\Mes images My Pictures Images (Pictures)
Mes documents\Mes Videos My Videos Vid�os (Videos)
  Pictures Images (Pictures)
Mes documents r�cents (Recent) Recent AppData\Roaming\Microsoft\Windows\Recent
Mod�les Templates AppData\Roaming\Microsoft\Windows\Templates
SendTo SendTo AppData\Roaming\Microsoft\Windows\SendTo
Voisinage d'impression PrintHood AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Voisinage r�seau NetHood AppData\Roaming\Microsoft\Windows\Network Shortcuts
     
  Contacts Contacts
  Documents Documents
  Download Download
  Links Liens (Links)
  Music Musique (Music)
  Saved Games Parties enregistr�es (Saved Games)
  Themes AppData\Roaming\Microsoft\Windows\Themes

 

�volutions des variables d'environnement

Pour lister les variables et leurs valeurs entrer la commande SET dans une Console CMD.
Comparer les r�sultats pour XP et pour W7 :

Variables d'environnement

Windows XP

Windows7

ALLUSERSPROFILE C:\Documents and Settings\All Users C:\ProgramData
APPDATA C:\Documents and Settings\JF\Application Data C:\Users\JF\AppData\Roaming
CommonProgramFiles C:\Program Files\Fichiers communs C:\Program Files\Common Files
USERPROFILE C:\Documents and Settings\JF C:\Users\JF

 

 

La commande MKLINK

Arriv�e avec Vista, la commande mklink permet de cr�er des Liens R�els vers des fichiers du m�me volume, des Jonctions vers des dossiers du volume ou d'un autre volume, et des Liens Symboliques relatifs ou absolus vers des fichiers ou des dossiers.

C:\>mklink /?
Cr�e un lien symbolique.

MKLINK [[/D] | [/H] | [/J]] Lien Cible

/D Cr�e un lien symbolique vers un r�pertoire. Par d�faut,
il s'agit d'un lien symbolique vers un fichier.
/H Cr�e un lien r�el � la place d'un lien symbolique.
/J Cr�e une jonction de r�pertoires.
Lien Sp�cifie le nom du nouveau lien symbolique.
Cible Sp�cifie le chemin d'acc�s (relatif ou absolu) auquel
le nouveau lien fait r�f�rence.

C:\>

Noter que si /D cr�e un Lien Symbolique vers un r�pertoire, mklink sans commutateur permet de cr�er un Lien Symbolique vers un fichier. Si le chemin de la cible est absolu (g:\un-dossier\un-sous-dossier\cible) le lien symbolique est absolu. Si le chemin donn� est relatif (.\un-dossier\un-sous-dossier\cible) le chemin est dit relatif. Nous verrons les cons�quences de ces notions plus loin.


 

R�paration d'un Lien

Voici comment recr�er la Jonction "Default User" dans le dossier Users avec la commande mklink /J.
Comme cette Jonction est habituellement cach�e et prot�g�e on lui redonne les attributs H et R avec la commande ATTRIB.
Si attrib sans argument n'affiche pas les jonctions, utiliser DIR /AL pour les lister, ou utiliser la compl�tion de commandes en appuyant sur la touche tabulation : ATTRIB [TAB]
La plupart de ces Jonctions sont interdites d'acc�s au groupe "Tout le monde". La raison de cette disposition est expliqu�e ici. On utilisera la commande ICACLS pour r�tablir cette restriction.
Pour savoir quels attributs et protections il faut redonner � une jonction regarder sur un autre compte, ou sur une autre installation (installer au besoin une machine virtuelle).
DIR /AL affiche les Jonctions et leurs cibles, ATTRIB [TAB] affiche les attributs, ICACLS  montre les ACL.

Premi�re �tape, examiner la jonction sur une installation servant de r�f�rence :

C:\Users\JF>cd..

C:\Users>dir /al

R�pertoire de C:\Users

14/07/2009 07:08 <SYMLINKD> All Users [C:\ProgramData]
14/07/2009 07:08 <JONCTION> Default User [C:\Users\Default]

C:\Users>attrib "Default User"

HR C:\Users\Default User

C:\Users>icacls "Default User"
Default User Tout le monde:(DENY)(S,RD)
Tout le monde:(RX)
AUTORITE NT\Syst�me:(F)
BUILTIN\Administrateurs:(F)

1 fichiers correctement trait�s ; �chec du traitement de 0 fichiers

C:\Users>

Il n'y a plus qu'� corriger la jonction sur la machine concern�e, en utilisant les m�mes commandes compl�t�es des commutateurs adapt�s :

C:\Users>mklink /J "Default User" Users\Default
Jonction cr��e pour Default User <<===>> Users\Default

C:\Users>attrib /L "Default User" +H +R

C:\Users>icacls "Default User" /DENY "Tout le monde":(RD) /L
fichier trait� : Default User
1 fichiers correctement trait�s ; �chec du traitement de 0 fichiers

C:\User>icacls "Default User"
Default User Tout le monde:(DENY)(S,RD)
Tout le monde:(I)(OI)(CI)(F)
AUTORITE NT\Syst�me:(I)(OI)(CI)(F)
BUILTIN\Administrateurs:(I)(OI)(CI)(F)

1 fichiers correctement trait�s ; �chec du traitement de 0 fichiers

C:\bidon>

Remarquer l'utilisation du commutateur /L qui autorise le traitement des "Links". Suite � l'action de la commande attrib ces Liens seront � nouveau cach�s, et le cadenas sera � nouveau visible sur l'icone. Si l'utilisateur affiche les fichiers cach�s et syst�mes il sera tent� de cliquer sur ce qu'il voit comme des raccourcis. L'acc�s est alors refus�, r�sultat de la commande icacls. Le but est que l'utilisateur ne soit pas ensuite tent� de supprimer des fichiers qu'il pourrait croire en double alors qu'ils ne le sont pas. Cela prot�ge �galement des jonctions r�cursives observ�es dans certains dossiers comme Application Data <== cet article montre �galement comment sauvegarder l'ACL d'un dossier, et comment utiliser cette sauvegarde pour r�parer la protection.

Il est pr�f�rable d'utiliser le SID du groupe "Tout le monde", �a �vite les probl�mes de langue :
icacls "Default User" /DENY "*S-1-1-0":(RD) /L

Certaines jonctions ont l'attribut /i. D'apr�s ce que dit l'aide (attrib /?) le fichier est ainsi index�, mais sans contenu.

junction-restore-deny-access.vista-7.cmd
Si l'utilisation de lignes de commandes vous pose probl�me, ou si vous avez beaucoup de jonctions � traiter, vous pouvez vous aider de ce batch qui donne les attributs HSI et restaure l'interdiction d'acc�s au groupe "Tout le monde".

 

La commande FSUTIL

La commande fsutil est pr�sente sur XP, Vista, Win7.
On a vu qu'elle pouvait �tre utilis�e � l'instar de mklink pour cr�er des Liens R�els avec fsutil hardlink create.
Par Zebulon : fsutil : la trousse � outils de votre disque

E:\>fsutil
---- Commandes prises en charge ----

behavior      Contr�le du mode du syst�me de fichiers
dirty         Gestion du bit d'int�grit� du volume
file          Commandes fichier sp�cifiques
fsinfo        Informations du syst�me de fichiers
hardlink      Gestion des liens r�els
objectid      Gestion des ID d'objets
quota         Gestion des quotas
repair        Gestion de r�paration spontan�e
reparsepoint  Gestion du point d'analyse
resource      Gestion du Gestionnaire transactionnel de ressources
sparse        Contr�le de fragmentation des fichiers
transaction   Gestion des transactions
usn           Gestion USN
volume        Gestion des volumes

E:\>md dossier

E:\>echo toto>toto.txt

E:\>fsutil hardlink create
Utilisation : fsutil hardlink create <nouveau nom de fichier>
<nom de fichier existant>
Par ex. : fsutil hardlink create c:\foo.txt c:\bar.txt

E:\>fsutil hardlink create totohardlink.txt toto.txt
Liaison permanente cr��e pour E:\totohardlink.txt <<===>> E:\toto.txt

E:\>type totohardlink.txt
toto

E:\>fsutil reparsepoint
---- Commandes REPARSEPOINT prises en charge ----

query Interroge un point d'analyse
delete Supprime un point d'analyse

E:\>mklink /J dossierj dossier
Jonction cr��e pour dossierj <<===>> dossier

E:\>fsutil reparsepoint query dossierj
Valeur de la balise d'analyse : 0xa0000003
Valeur de balise : Microsoft
Valeur de balise : Substitut de nom
Valeur de la balise : Point de montage
D�calage nom substitut : 0
Longueur nom substitut : 28
D�calage nom affich� : 30
Longueur nom affich� : 20
Nom substitut : \??\E:\dossier
Nom affich� : E:\dossier

Analyser la longueur des donn�es: 0x0000003c
Donn�es d'analyse :
0000: 00 00 1c 00 1e 00 14 00 5c 00 3f 00 3f 00 5c 00 ........\.?.?.\.
0010: 45 00 3a 00 5c 00 64 00 6f 00 73 00 73 00 69 00 E.:.\.d.o.s.s.i.
0020: 65 00 72 00 00 00 45 00 3a 00 5c 00 64 00 6f 00 e.r...E.:.\.d.o.
0030: 73 00 73 00 69 00 65 00 72 00 00 00 s.s.i.e.r...

E:\>

fsutil hardlink list <nom>
permet de lister les Liens R�els. On ne peut pas faire comme DIR et lister les liens r�els pr�sents dans un dossier, mais en indiquant un nom de fichier � la commande, fsutil trouve les enregistrements qui pointent vers les m�mes octets. En cons�quence quel que soit le fichier, cible ou Lien R�el, le r�sultat est le m�me. Dans l'exercice qui suit, on cr�e un fichier avec la commande echo, puis un lien r�el avec mklink. La commande type montre que le lien r�el repr�sente bien les m�mes octets. On applique ensuite la commande fsutil hardlink list au deux fichiers pour constater qu'on obtient bien le m�me r�sultat.

F:\>echo test>cible.txt

F:\>mklink /H lienreel.txt cible.txt
Liaison permanente cr��e pour lienreel.txt <<===>> cible.txt

F:\>type lienreel.txt
test

F:\>fsutil hardlink list cible.txt
\cible.txt
\lienreel.txt

F:\>fsutil hardlink list lienreel.txt
\cible.txt
\lienreel.txt

F:\>

HardLink?>
On peut se faire une petite commande (une de plus) qui appara�tra dans le menu contextuel des fichiers avec ce reg :

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\HardLink?>\command]
@="cmd /k fsutil hardlink list %1"

Ce nouvel item [HardLink?>] permettra de lister les liens r�els en rapport avec un fichier.
Si ce bricolage qui permet d'en savoir un peu sur les Liens R�els pr�sents sur le disque dur a retenu votre attention, vous pourriez �tre int�ress�s par Link Shell Extension pr�sent� plus loin. En effet, une fois install�, il permet de cr�er en un clic ce que le traducteur a choisi d'appeler "Liens physiques" et "Liens symboliques". Il ajoute un rep�re sur tous les Liens R�els, permettant ainsi de les visualiser facilement dans Explorer. enfin, il ajoute un onglet "Lien" aux propri�t�s des fichiers qui liste les Liens R�els.
En utilisant  [HardLink?>] ou Link Shell Extension pour analyser les Liens R�els pr�sents dans Windows et System32 de W7, on verra des tas de choses int�ressantes. On comprendra alors le r�le du myst�rieux dossier winsxs dont le poids en apparence disproportionn� inqui�te les utilisateurs. Voir �galement Jonctions?>



 

Liens R�els

Un Lien R�el est une nouvelle entr�e du Directory ou Index vers un fichier (NTFS adds a directory entry for the hard link without duplicating the original file)

Les Liens R�els ne concernent que les fichiers :
mklink /H c:\court\Toto.txt  "c:\tr�s profonde arborescence\tas de dossiers\toto � la plage.txt" 

Pour info les ADS sont �galement concern�s : voir � la fin de cette petite d�mo.

Le r�sultat est comme un second fichier mais les deux sont li�s : une modification dans un fichier appara�t dans l'autre fichier. Un fichier n'est en effet qu'un paquet d'octets sur le disque dur, et ce que nous montre l'explorateur est une repr�sentation imag�e des fichiers. L'icone du fichier n'est pas le fichier, mais une �vocation de celui-ci, un lien vers les octets.

L'analogie de la laisse

On utilise parfois l'analogie du chien reli� � son ma�tre par une laisse. Appelons-le "Octets". Le chien peut avoir plusieurs laisses. Tant que des laisses existent, le chien est l� (en clair les octets du fichier sont accessibles). Si la derni�re laisse est coup�e, le lien avec le chien est perdu. C'est ce qui se passe quand nous supprimons un fichier, nous coupons la derni�re laisse, les octets existent toujours mais ont disparu pour le syst�me, ils ne sont plus accessibles. En informatique si on veut faire attention � ses octets, on surveille aussi ses laisses, sinon on aura besoin de fouiller la Corbeille.

La Corbeille est la ficelle de secours. Si nous la vidons, les octets sont alors livr�s aux hasards des �critures et finiront par �tre remplac�s. Si on a vid� la Corbeille et ainsi perdu un fichier important il faut faire en sorte de ne plus �crire sur la partition, et utiliser un logiciel sp�cialis� pour identifier les octets, les copier sur une autre partition, et leur r�attribuer ... une laisse. 
Noter qu'avec Vista est apparue une notion d'historique des fichiers dont l'utilisation a �t� avec bonheur �tendue � toutes les versions de Windows 7. Il s'agit du syst�me des Versions Pr�c�dentes. Exemple avec R�cup�ration de ntuser.dat � partir d'une version pr�c�dente.

La cons�quence est qu'on peut supprimer l'un ou l'autre des deux "fichiers" : comme il reste une laisse vers les octets, l'autre fichier, qui pourtant peut porter un nom diff�rent, reste en place. Comme on peut cr�er plusieurs Liens R�els vers un fichier, celui-ci ne sera perdu que quand on aura supprim� toutes les laisses.

De cette conception, un Lien R�el ne peut pas pointer vers un fichier d'un autre volume.
Sur XP on peut cr�er un Lien R�el avec la commande fsutil hardlink create. La commande fsutil a �t� tr�s partiellement abord�e � la section pr�c�dente.

Visualisation de Liens R�els dans la MFT :

Pour examiner ce qui se passe sur un volume quand on op�re sur des fichiers, rien de tel qu'une petite cl� USB fra�chement format�e. On se sert de l'excellent HxD pour visualiser ses octets. Le contenu du fichier texte �tant connu, une simple recherche permet de retrouver les enregistrements :

http://fspsa.free.fr/ng/hardlink-demo.gif

 

Diff�rences entre les types de Liens

Rappels

L'objet habituellement d�sign� sous le terme de raccourci est un fichier dont l'extension LNK est masqu�e. On peut faire plusieurs raccourcis vers un m�me objet (fichier ou dossier). Un raccourci peut pointer un objet situ� sur un autre volume. Les propri�t�s d'un raccourci permettent d'y apporter des modifications, on peut par exemple ajouter des param�tres. Certains raccourcis ont une extension URL, ils utilisent des protocoles propres au web. Comme les raccourcis sont des fichiers, ils occupent de l'espace. Le proc�d� est ind�pendant du type de format. Enfin un raccourci ne peut �tre qu'absolu.

Certaines icones sur le bureau et dans le menu d�marrer se comportent comme des raccourcis, mais ne sont pas supprimables et ont des menus contextuels particuliers. Ce sont des objets shell d�finis dans le registre http://fspsa.free.fr/objets-shell.htm

J'ai report� en Annexe une section sur l'objet Folder Shortcut. �a permet de faire de la redirection de dossiers sans utiliser le NTFS. Folder Shortcut int�ressera certainement ceux qui sont en FAT32.

 

Les Liens NTFS

Les Liens Symboliques permettent de r�ellement cr�er de nouveaux chemins vers les objets. Dans l'exemple vu plus haut c:\court\Toto.txt d�signera r�ellement les octets du fichier enfoui dans l'arborescence. Les deux chemins coexisteront et seront aussi valables l'un que l'autre.

Liens R�els

Un Lien R�el n'occupe pas de place, c'est un fichier virtuel. Un Lien R�el cr�e une r�f�rence suppl�mentaire dans la MFT (Master File Table) vers un fichier situ� sur le volume. Si le fichier original est supprim�, les Liens R�els qui pointent vers ses octets existent toujours et restent utilisables. Pour que ces octets soient lib�r�s il faut supprimer tous les Liens R�els concern�s.

L'exercice suivant montre la cr�ation d'un fichier cible suivi de la cr�ation d'un Lien R�el. On modifie ensuite tour � tour les contenus de l'un ou l'autre. La suppression de la cible ne supprime pas le contenu du Lien R�el puisqu'il s'agit en fait des m�mes octets, sous deux noms diff�rents :

G:\>echo Je suis un Lien R�el ! >cible

G:\>mklink /H lien cible
Liaison permanente cr��e pour lien <<===>> cible

G:\>type lien
Je suis un Lien R�el !

G:\>echo On sait ! >>lien

G:\>type cible
Je suis un Lien R�el !
On sait !

G:\>echo Je pars ! >>cible

G:\>del cible

G:\>type lien
Je suis un Lien R�el !
On sait !
Je pars !

G:\>del lien

Remarque : dans cet exemple en lignes de commandes on s'est affranchi des extensions en cr�ant des fichiers textes car on affiche leurs contenus avec la commande type. En pratique il faut respecter les extensions des Liens R�els si on veut qu'en cliquant dessus ils s'ouvrent comme pr�vus. M�me chose avec les Liens Symboliques quand ils pointent des fichiers.

 

Jonctions

Les Jonctions sont bas�es comme les Liens Symboliques sur un m�canisme du NTFS appel� Reparse Points. � la diff�rence des Liens Symboliques ils ne peuvent d�signer que des dossiers, �ventuellement situ�s sur d'autres volumes, et n'utilisent que des chemins absolus. Ils ne peuvent cibler un dossier sur le r�seau.

Cr�ation d'un dossier cible, cr�ation d'une Jonction en utilisant un chemin relatif vers le dossier cible, v�rification du Lien absolu enregistr� avec dir, d�placement du lien et de la cible dans un dossier, rev�rification du lien avec dir, constatation que le lien absolu est perdu :

G:\>md cible

G:\>mklink /J link cible
Jonction cr��e pour link <<===>> cible

G:\>dir /AL
 <JONCTION> link [
G:\cible]

G:\>move link aliens
1 r�pertoires d�plac�s.

G:\>move cible aliens
1 r�pertoires d�plac�s.

G:\>cd aliens

G:\aliens>dir /AL
<JONCTION> link [
G:\cible]

G:\aliens>cd link
Le fichier sp�cifi� est introuvable.

En rouge, le chemin est absolu, alors que c'est un chemin relatif qui avait �t� entr�. Les Jonctions ne sont pas concern�es par les liens relatifs. On va voir que les Liens Symboliques sont capables d'�tre relatifs ou absolus.

Cette d�mo montre la fa�on dont sont enregistr�s les Jonctions dans la MFT. Les enregistrements sont absolus :

http://fspsa.free.fr/ng/junction-demo.gif

 

Liens Symboliques

Les Liens Symboliques d�signent des fichiers ou des dossiers, et peuvent pointer vers d'autres volumes sur le r�seau. De cette disposition, la suppression de la cible d'un Lien Symbolique le rend orphelin, comme cela arrive avec les raccourcis. Si le lien est relatif, le d�placement du lien symbolique provoque la perte de la liaison � sa cible. Les Liens Symboliques disposent d'un onglet "Raccourci" dans leurs Propri�t�s permettant de consulter la Cible du Lien.

Pour cr�er un lien relatif, il suffit d'indiquer un chemin relatif dans la commande mklink.
Cr�ation d'un fichier texte avec la commande echo, cr�ation d'un lien symbolique avec mklink, v�rification du fonctionnement du lien avec type, d�placement du lien vers un autre dossier avec move, v�rification que le lien est cass� (type link ne trouve plus le fichier), d�placement de la cible dans le dossier, v�rification du fonctionnement revenu du lien, et v�rification du type de lien cr�� :

G:\>echo Coucou ! >cible

G:\>mklink link
cible
Lien symbolique cr�� pour link <<===>>
cible

G:\>type link
Coucou !

G:\>md aliens

G:\>REM D�placement du lien vers un autre dossier

G:\>move link aliens
1 fichier(s) d�plac�(s).

G:\>cd aliens

G:\aliens>type link
Le fichier sp�cifi� est introuvable.

G:\aliens>move \cible .
1 fichier(s) d�plac�(s).

G:\aliens>type link
Coucou !

G:\aliens>dir /AL
<SYMLINK> link [
cible]

http://fspsa.free.fr/ng/symlink-demo.gif

On en d�duit qu'on peut cr�er un lien relatif en rempla�ant la lettre du lecteur par un point.
On en verra des exemples plus loin lors de la copie de liens relatifs.

 

Pour cr�er un lien absolu vers un fichier, on indique un chemin absolu :

G:\>echo Coucou !! >cible

G:\>mklink link
g:\cible
Lien symbolique cr�� pour link <<===>>
g:\cible

G:\>type link
Coucou !!

G:\>REM D�placement du lien vers un autre dossier

G:\>move link \aliens
1 fichier(s) d�plac�(s).

G:\>cd aliens

G:\aliens>type link
Coucou !!

G:\aliens>move ..\cible .
1 fichier(s) d�plac�(s).

G:\aliens>type link
Le fichier sp�cifi� est introuvable.

G:\aliens>dir /AL
<SYMLINK> link [
g:\cible]

http://fspsa.free.fr/ng/symlink-absolu-demo.gif

 

Copies de Liens Symboliques

Lorsqu'on copie un raccourci (LNK ou URL) avec Explorer, on copie le raccourci, il n'y a aucune ambigu�t�. Avec les Jonctions et les Liens Symboliques, Explorer ne voit ces objets que comme on a pr�vu qu'il les voit. Copier les Liens plut�t que leurs Cibles n�cessite de pouvoir signifier � l'utilitaire ce que l'on veut copier. Explorer n'a pas de commutateur ou de menu-contextuel ayant cette fonction, il faut utiliser d'autres outils.

Robocopy

Robocopy est une puissante commande de copie. Ses nombreux commutateurs permettent de l'utiliser de diff�rentes fa�ons. Le commutateur le plus connu est sans doute /MIR qui permet de faire une copie miroir d'un dossier. Attention de ne pas se tromper en utilisant cette commande, par exemple le miroir d'un dossier vide vers un dossier empli de donn�es n'est en g�n�ral pas voulu (la premi�re fois) ! Bon � savoir, un commutateur permet de simuler une manip avant de l'ex�cuter en r�el. Robocopy fait partie de Windows depuis Vista. Cette version n'est pas utilisable sur XP, aller voir t�l�chargement et utilisations.

Par d�faut Robocopy copie non pas les liens NTFS en tant que liens, mais les dossiers et les fichiers qu'ils repr�sentent, en gardant le nom donn� au lien. Lors d'op�rations de sauvegarde par exemple on voudra �viter de copier ces liens en utilisant les commutateurs comme /XJ (eXclure Jonctions), /XJD (eXclure Jonctions de Dossiers), et /XJF (eXclure Jonctions de Fichiers). Remarque : ce terme utilis� dans l'aide de Robocopy est abusif, il n'existe pas de Jonctions de fichiers, mais des Liens Symboliques de fichiers.

Dans l'exemple on utilise le commutateur /E pour copier aussi les dossiers vides.
Sans le commutateur /XJ la jonction est copi�e en tant que dossier, c'est ce que montre le dir.
Avec le commutateur /XJ la jonction n'est pas copi�e :
 

G:\>md dossier1

G:\>md dossier2

G:\>md dossier1\dossier-a-copier

G:\>mklink /J dossier1\jonction-de-dossier-a-copier dossier1\dossier-a-copier
Jonction cr��e pour dossier1\jonction-de-dossier-a-copier <<===>> dossier1\dossier-a-copier

G:\>robocopy dossier1 dossier2 /E

-------------------------------------------------------------------------------
ROBOCOPY :: Copie de fichiers robuste pour Windows
-------------------------------------------------------------------------------

D�but : Sat Oct 03 16:16:17 2009

Source : G:\dossier1\
Dest : G:\dossier2\

Fichiers : *.*

Options : *.* /S /E /COPY:DAT /R:1000000 /W:30

-------------------------------------------------------------------------------

0 G:\dossier1\
Nouveau r�p. 0 G:\dossier1\dossier-a-copier\
Nouveau r�p. 0 G:\dossier1\jonction-de-dossier-a-copier\

-------------------------------------------------------------------------------

Total Copi�s Ignor�s Diff�rences �checs Suppl�m.
R�p. : 3 2 1 0 0 0
Fichiers : 0 0 0 0 0 0
Octets : 0 0 0 0 0 0
Dur�es : 0:00:00 0:00:00 0:00:00 0:00:00

Fin : Sat Oct 03 16:16:17 2009

G:\>dir dossier2
<REP> dossier-a-copier
<REP> jonction-de-dossier-a-copier
0 fichier(s) 0 octets

G:\>rd dossier2 /S /Q

G:\>md dossier2

REM         ====== PHASE 2 : avec commutateur /XJ ==========

G:\>robocopy dossier1 dossier2 /E /
XJ

-------------------------------------------------------------------------------
ROBOCOPY :: Copie de fichiers robuste pour Windows
-------------------------------------------------------------------------------

D�but : Sat Oct 03 16:18:14 2009

Source : G:\dossier1\
Dest : G:\dossier2\

Fichiers : *.*

Options : *.* /S /E /COPY:DAT /XJ /R:1000000 /W:30

-------------------------------------------------------------------------------

0 G:\dossier1\
Nouveau r�p. 0 G:\dossier1\dossier-a-copier\

-------------------------------------------------------------------------------

Total Copi�s Ignor�s Diff�rences �checs Suppl�m.
R�p. : 3 1 2 0 0 0
Fichiers : 0 0 0 0 0 0
Octets : 0 0 0 0 0 0
Dur�es : 0:00:00 0:00:00 0:00:00 0:00:00

Fin : Sat Oct 03 16:18:14 2009

G:\>dir dossier2
Le volume dans le lecteur G s'appelle GGG=Copie de F=
Le num�ro de s�rie du volume est FEE3-87FD

R�pertoire de G:\dossier2

03/10/2009 16:18 <REP> .
03/10/2009 16:18 <REP> ..
03/10/2009 16:18 <REP> dossier-a-copier
0 fichier(s) 0 octets
3 R�p(s) 15 443 877 888 octets libres

Pour r�sumer, Robocopy copie par d�faut les contenus des Jonctions, ce qui explique les d�sagr�ments relat�s plus haut quand des Jonctions ont pour cible leur propre conteneur (effet "La vache-qui-rit�"). Pour �viter cela on utilise en r�gle g�n�rale le commutateur /XJ et les jonctions sont simplement ignor�es. Il n'est pas pr�vu de copier en tant que Liens des jonctions ou des liens symboliques de dossiers.

Si des Liens Symboliques de fichiers existent dans le dossier source, la copie est effectu�e, mais en tant que fichier. Pour ne pas r�pliquer ces Liens, utiliser /XJ ou /XJF.

Il est toutefois possible, seulement pour les fichiers, de copier les Liens Symboliques au lieu des fichiers avec le commutateur /SL :
/SL:: copy symbolic links versus the target.
/SL:: copie les liens symboliques par opposition � la cible.

Dans cet exemple on cr�e un Lien Symbolique absolu d'un fichier dans source, puis on copie source vers cible avec le commutateur /SL :
 

U:\>md source

U:\>md cible

U:\>echo coucou >fichier.txt

U:\>REM Cr�ation d'un lien symbolique absolu dans source

U:\>mklink source\symbolic.txt u:\fichier.txt
Lien symbolique cr�� pour source\symbolic.txt <<===>> u:\fichier.txt

U:\>REM /SL copie les Liens au lieu des fichiers :

U:\>robocopy source cible
/SL

-------------------------------------------------------------------------------
ROBOCOPY :: Copie de fichiers robuste pour Windows
-------------------------------------------------------------------------------

D�but : Sun Oct 04 02:15:48 2009

Source : U:\source\
Dest : U:\cible\

Fichiers : *.*

Options : *.* /COPY:DAT /R:1000000 /W:30

-------------------------------------------------------------------------------

1 U:\source\
Nouveau fichier 0 symbolic.txt

-------------------------------------------------------------------------------

Total Copi�s Ignor�s Diff�rences �checs Suppl�m.
R�p. : 1 0 1 0 0 0
Fichiers : 1 1 0 0 0 0
Octets : 0 0 0 0 0 0
Dur�es : 0:00:00 0:00:00 0:00:00 0:00:00

Fin : Sun Oct 04 02:15:48 2009

U:\>cd cible

U:\cible>dir
<
SYMLINK> symbolic.txt [u:\fichier.txt]
1 fichier(s) 0 octets

Le dossier cible contient le Lien Symbolique et non le fichier.
En lisant "/SL copie les liens symboliques par opposition � la cible" on pourrait esp�rer que cela serait possible avec les dossiers. �a ne marche pas, ni avec les Liens Symboliques ni avec les Jonctions, et malgr� l'utilisation du commutateur /SL on r�cup�re des dossiers et non des Liens :

U:\>md cible

U:\>md source

U:\>md dossier

U:\>mklink /D source\link-de-dossier u:\dossier
Lien symbolique cr�� pour source\link-de-dossier <<===>> u:\dossier

U:\>robocopy source cible
/SL /E

-------------------------------------------------------------------------------
ROBOCOPY :: Copie de fichiers robuste pour Windows
-------------------------------------------------------------------------------

D�but : Sun Oct 04 06:07:23 2009

Source : U:\source\
Dest : U:\cible\

Fichiers : *.*

Options : *.* /S /E /COPY:DAT /R:1000000 /W:30

-------------------------------------------------------------------------------

0 U:\source\
Nouveau r�p. 0 U:\source\link-de-dossier\

-------------------------------------------------------------------------------

Total Copi�s Ignor�s Diff�rences �checs Suppl�m.
R�p. : 2 1 1 0 0 0
Fichiers : 0 0 0 0 0 0
Octets : 0 0 0 0 0 0
Dur�es : 0:00:00 0:00:00 0:00:00 0:00:00

Fin : Sun Oct 04 06:07:23 2009


U:\>dir cible
<
REP> link-de-dossier
0 fichier(s) 0 octets


 

XCOPY

On a vu qu'avec l'arriv�e de mklink plusieurs utilitaires avaient re�us des commutateurs suppl�mentaires adapt�s aux Liens NTFS, par exemple /L avec copy, dir, attrib, icacls. Xcopy voit appara�tre le commutateur /B. Voici un extrait de l'aide, le commutateur /B a �t� ajout� tout � la fin :

xcopy /?
/B Copie le lien symbolique et non pas la cible du lien.

L'exemple montre l'utilisation de xcopy une premi�re fois avec le commutateur /B, et une seconde fois sans le commutateur.
Xcopy demande toujours confirmation si ce qu'on copie est un fichier ou un dossier. Lorsqu'on copie un dossier, il suffit de terminer le chemin de la destination par une barre oblique inverse \ pour bien signifier que c'est un dossier. Avec un fichier on ne peut pas �viter la question. Si on veut automatiser on utilise une astuce consistant � �crire la r�ponse (F pour Fichier) dans un fichier dont on injecte le contenu en guise de r�ponse dans la commande. Le fichier cr�� avec la commande echo s'appelle ici simplement F. les commandes echo et xcopy sont enchain�es avec && :

G:\>md dossier

G:\>echo coucou>fichier.txt

G:\>mklink symbol.txt g:\fichier.txt
Lien symbolique cr�� pour symbol.txt <<===>> g:\fichier.txt

G:\>REM copie du lien symbolique dans dossier

G:\>echo F>F&&xcopy symbol.txt dossier
/B <F
G:symbol.txt
1 fichier(s) copi�(s)

G:\>cd dossier

G:\dossier>type symbol.txt
coucou

G:\dossier>dir
<SYMLINK> symbol.txt [g:\fichier.txt]
1 fichier(s) 0 octets

G:\dossier>

G :\REM     ========= SECONDE PHASE =========

G:\>REM v�rification que
sans /B c'est un fichier qui est copi�

G:\dossier>del symbol.txt

G:\dossier>cd..

G:\>echo F>F&&xcopy symbol.txt dossier <F
G:symbol.txt
1 fichier(s) copi�(s)

G:\>cd dossier

G:\dossier>type symbol.txt
coucou

G:\dossier>dir
8 symbol.txt
1 fichier(s) 8 octets

Lors de la copie du lien, le r�sultat est bien identifi� comme SYMLINK et p�se z�ro octet.
Dans le second cas c'est bien un fichier de huit octets qui a �t� copi�.

 

Copies de liens relatifs

Mklink permet de cr�er des Liens Symboliques de r�pertoire avec le commutateur /D, ou de fichiers en ne mettant aucun commutateur. En g�n�ral on d�fini la cible du lien en indiquant son chemin complet. Mais si on remplace la lettre de lecteur par un point on obtient un lien relatif. Il serait int�ressant de savoir copier des liens relatifs de fa�on � conserver une structure ind�pendante de la lettre de lecteur, ce serait utile en cas de sauvegarde. Le test suivant est effectu� avec la simple commande copy et son commutateur /L

La commande echo cr�e un fichier texte.
La commande mklink sans commutateur cr�e un Lien Symbolique.
Le Lien Symbolique est relatif car la lettre du lecteur a �t� remplac�e par un point.
On ajoute "-SR" (Symbolique Relatif) au nom du lien obtenu :

X:\>echo coucou>1.txt

X:\>mklink 1-sr.txt .\1.txt
Lien symbolique cr�� pour 1-sr.txt <<===>> .\1.txt

X:\>copy /L *.* y:
1-sr.txt
1.txt
2 fichier(s) copi�(s).

X:\>

 On v�rifie le r�sultat sur le disque cible :

Y:\>dir

22/11/2010 11:40 <REP> .
22/11/2010 11:40 <REP> ..
22/11/2010 11:39 <SYMLINK> 1-sr.txt [.\1.txt]
22/11/2010 11:39 8 1.txt

Le test final consiste � d�truire les fichiers d'origine et � v�rifier le fonctionnement de 1-sr.txt.
Dans cet exemple on symbolise le lien relatif en ajoutant "--" au nom :

X:\>md structure\dossier\repertoire

X:\>md cedossier

X:\>echo test>structure\dossier\repertoire\texte.txt

X:\>cd cedossier

X:\cedossier>mklink texte--.txt ..\structure\dossier\repertoire\texte.txt
Lien symbolique cr�� pour texte--.txt <<===>> ..\structure\dossier\repertoire\texte.txt

X:\cedossier>type texte--.txt
test

X:\cedossier>cd..

X:\>xcopy /S /E /B *.* y:
X:cedossier\texte--.txt
X:structure\dossier\repertoire\texte.txt
2 fichier(s) copi�(s)

X:\>rd /S /Q cedossier

X:\>rd /S /Q structure

X:\>y:

Y:\>cd cedossier

Y:\cedossier>type texte--.txt
test

Y:\cedossier>dir texte--.txt
22/11/2010 12:29 <SYMLINK> texte--.txt [..\structure\dossier\repertoire\texte.txt]

 

Limitations

NTFS obligatoire. FAT et exFAT ne g�rent pas ces liens.
Contrairement aux raccourcis habituels, les Liens NTFS ne se r�parent pas d'eux-m�mes. Si la cible est d�plac�e ou renomm�e, le lien est perdu. Cette remarque ne concerne pas les Liens R�els qui ciblent directement l'enregistrement (les octets) du fichier. C'est pour cela qu'on les appelle des Hard Links (liens durs).
Les Jonctions ne concernent que des dossiers.
Mklink /J ou /D pour un fichier est accept� (!), mais le r�sultat prend l'allure d'un dossier et ne fonctionne pas.
On peut cr�er plusieurs Jonctions vers un m�me dossier. Idem pour les Liens Symboliques.
Les Jonctions et les Liens Symboliques peuvent cibler vers un autre volume NTFS.
Les Jonctions ne peuvent cibler un dossier situ� sur le r�seau.
Si on supprime ou renomme la cible le Lien devient sans effet (sauf pour les liens r�els, qui pointent directement les octets du fichier).
Un Lien peut �tre supprim� ; la cible reste normalement inchang�e.
On ne peut pas copier des Liens de dossiers : soit on ne copie rien, soit c'est le dossier et son contenu qui est copi�.
Rien n'est pr�vu pour se prot�ger des effets des liens imbriqu�s, sauf � interdire leur acc�s avec icacls /L.
L'acc�s � certains Liens cr��s par le syst�me est interdit (icacls /L).
Le commutateur /XJ emp�che Robocopy de copier les dossiers point�s par les Liens.
Un Lien R�el ne peut concerner qu'un fichier du m�me volume.
On peut cr�er plusieurs Liens R�els vers un m�me fichier.
La suppression du fichier ou d'un Lien R�el n'a aucun effet sur le fichier et ses autres Liens R�els.
Il faut supprimer tous les Liens R�els et le fichier pour lib�rer les octets.
Note : comme d'habitude ces octets ne seront r�ellement lib�r�s qu'apr�s vidage de la corbeille.

 

Dangers

http://www.economicexpert.com/a/NTFS:Junction:point.htm
http://www.zebulon.fr/astuces/230-creer-un-lien-symbolique-sous-windows.html
http://fspsa.free.fr/recursivite.htm
Sur Vista les Liens NTFS sont identifi�s par une fl�che de raccourci sur l'icone. C'est une bonne initiative car l'un des reproches faits aux jonctions sur XP �taient leurs discr�tions. On peut rapidement s'emm�ler les crayons en confondant dossiers et jonctions.
Le meilleur outil pour cr�er une Jonction sur XP est l'outil junction de Sysinternals (voir la section Utilitaires ci-apr�s). Utiliser son commutateur -D (Delete) pour supprimer sans risque une Jonction. Cependant, j'ai supprim� directement depuis l'explorateur de fichiers des Jonctions sur XP et Vista sans que cela supprime la cible.
La suppression d'un Lien NTFS via l'explorateur de fichiers ne devrait pas entrainer d'incident. Ils sont � pr�sent bien identifi�s comme des "raccourcis" par la petite fl�che habituelle sur l'icone (svp r�sistez � l'envie de ne pas afficher ces symboles). Mais il n'est pas certain que d'autres logiciels interpr�tent bien ces objets et ne suppriment pas la cible avec le Lien.
Il se peut aussi que l'utilisateur, un programme, ou une commande, ne per�oive pas toujours la diff�rence entre un Lien et sa cible. Les op�rations qu'on pense faire sur un lien peuvent en fait s'appliquer � la cible plut�t qu'au lien. Par exemple la commande attrib va agir sur la cible si on oublie d'utiliser le commutateur /L.
 

Utilitaires

 

 

 

 

Conclusion

Une Jonction ne peut �tre qu'un chemin absolu vers un dossier.

On pourra donc utiliser les Jonctions pour cr�er des liens absolus vers des dossiers.
Et r�server les Liens Symboliques pour des liens relatifs vers des dossiers.

Pour les fichiers on pourra utiliser les Liens Symboliques qui ont l'avantage d'�tre list�s dans une commande DIR /AL.
Si on ne veut pas que ce soit list� avec DIR, alors faire un Hardlink.

On pourra utiliser des Liens R�els, ils ne seront pas affich�s en tant que Liens NTFS par la commande DIR et apparaitront comme des fichiers-r�pliques du fichier originel. Retenir que ces Liens R�els ne sont que des laisses, et non les octets du fichier. Ce ne sont pas des sauvegardes. Cependant ils doivent tous �tre supprim�s pour que les octets soient rendus � l'univers des octets sans attaches. Alors qu'un Lien Symbolique ou un raccourci peut tr�s bien continuer � pointer vers des octets qui n'existent plus.

L'utilit� de ces moyens est d�montr� par l'utilisation qui en est faite par Vista dans le dossier Users et ses sous-dossiers tels les profils des utilisateurs. D'autres syst�mes d'exploitation utilisent ces m�mes m�thodes.

Au niveau utilisateur on avait d�j� commenc� sous XP � se servir des Jonctions pour d�localiser des dossiers du syst�me afin de lib�rer de la place sur une partition syst�me devenue trop �troite. Ou pour all�ger les images de sauvegarde de la partition syst�me. Si sur XP je n'ai jamais vu l'utilisation d'une Jonction pour d�localiser  "Documents and Settings", l'exp�rience semble devenir populaire avec le dossier Users de Vista et Win7. Il faut faire l'op�ration d�s l'installation � cause de, justement, la pr�sence des Jonctions dans les profils. Comme on l'a vu leur copie n'est en effet pas pr�vue. Quoique leur absence ne soit pas un drame, seule la compatibilit� pourrait poser probl�me, leur recr�ation est souhaitable et n�cessite l'utilisation d'un batch. Mais en proc�dant d�s l'installation, les Jonctions seront cr��es avec les profils.

Il est regrettable que les Liens NTFS ne fonctionnent pas avec le format exFAT (version pour XP) mis au point pour les volumes amovibles, les liens relatifs auraient �t� tr�s appr�ci�s (voir l'article sur les changements de lettres des volumes amovibles). On peut bien s�r formater, m�me sous XP, une cl� USB en NTFS, mais ce n'est pas recommand� avec ce syst�me, � cause de l'emprise que prend explorer.exe sur le volume en activant syst�matiquement la surveillance disque.

Ce probl�me n'a cependant plus cours sur Vista. Si on est s�r de ne connecter la cl� que sur Vista ou Win7, pas de probl�me, la surveillance disque ne s'active plus automatiquement pour les volumes amovibles. Quand XP aura disparu de la circulation, on pourra abuser des Liens Symboliques relatifs ! Les liens sur une cl� USB fonctionneront quelle que soit la lettre attribu�e par le syst�me au volume amovible.

Voici un exemple d'utilisation pratique des jonctions pour r�soudre un probl�me de d�localisation de donn�es utilis�es intensivement, sur un disque rapide SSD. Cela permet de r�soudre simplement la question sans avoir � corriger tous les logiciels devant avoir acc�s � ces donn�es. C'est ici : De l'utilisation des points de jonctions pour l'optimisation du streaming de samples sonores (MAO)

 

Sources d'inspiration

http://www.ntfs.com

Liens R�els et Symboliques

http://en.wikipedia.org/wiki/NTFS
http://en.wikipedia.org/wiki/NTFS_reparse_point
http://en.wikipedia.org/wiki/NTFS_junction_point
http://en.wikipedia.org/wiki/NTFS_symbolic_link
http://en.wikipedia.org/wiki/Inode 

http://fr.wikipedia.org/wiki/Hard_link
http://en.wikipedia.org/wiki/Hard_link
http://fr.wikipedia.org/wiki/Lien_symbolique
http://en.wikipedia.org/wiki/Symbolic_link

http://fr.wikipedia.org/wiki/Master_File_Table

http://www.zebulon.fr/astuces/230-creer-un-lien-symbolique-sous-windows.html
http://www.zebulon.fr/astuces/commenter/1-230-creer-un-lien-symbolique-sous-windows
Dans le noyau de Windows Vista : Partie 1 ; Liens symboliques bas�s sur des fichiers
"Un lien symbolique est un fichier virtuel qui pointe vers un fichier r�el" :
 http://www.bellamyjc.org/fr/theoriemultiboot3.html#liens_symboliques
Cr�ation d'un lien symbolique avec la commande FSUTIL
http://www.bellamyjc.org/fr/theoriemultiboot3.html#FSUTIL
XP : d�localisation du dossier C:\Windows\$hf_mig$ et mise en place d'un jonction pour tromper le syst�me
http://www.bellamyjc.org/fr/windowsxp2003.html#hf_mig
L'effet vache qui rit
XP : d�localisation de Program Files et mise en place d'une jonction pour tromper le syst�me

Syllabus Syst�mes d'Exploitation de Monica Bastreghi

NTFS Documention par Richard Russon et Yuval Fledel - html
NTFS Documention par Richard Russon et Yuval Fledel - scribd

http://www.hotline-pc.org/ads.htm

Previewing the Windows NT 5.0 File System ; Hard Links ; Reparse Points ...

TECHNET : Working with Files System
TECHNET : How NTFS Works (lire jusqu'� la fin !)
MSDN : About Directory Management (bis) - Programming Considerations (bis) - Creating Symbolic Links (bis)
MSDN : Hard Links and Junctions
MSDN : Symbolic Links
MSDN : Reparse Points
MSDN : Reparse Point Tags
MSDN : Reparse Points Operations
MSDN : Reparse Points and File Operations
MSDN : Per-User junctions ans System Junctions

Link Shell Extension (LSE) : provides for the creation of Hardlinks , Junctions , Volume Mountpoints , and Vista's Symbolic Links

http://para.inria.fr/~remy/poly/system/camlunix/fich.html
http://www.flexhex.com/docs/articles/hard-links.phtml

MKLINK
   http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/
   http://techblissonline.com/vista-create-or-delete-ntfs-symbolic-link-or-symlinks/       
   http://technet.microsoft.com/en-us/library/cc753194
   http://technet.microsoft.com/en-us/library/cc753194#BKMK_examples

KB391707 : Vista : l'utilisation de Liens Symboliques ou de Liens R�els peut poser des probl�mes avec le syst�me de localisation MUI (Multilingual User Interface) : When you use a symbolic link or a hard link to run a program in Windows Vista, the program does not run

KB973455 : How to troubleshoot Windows Backup and Restore issues when a reparse point folder or its subfolder is added to a user library in Windows 7. (Error codes 0x80070001 0x81000037 0x80070003)

D�localisation
Win7 (et Vista) : installation : d�localisation de Users, Program Files, et ProgramData, avant la cr�ation du premier profil
http://tuts4tech.net/2009/08/05/windows-7-move-the-users-and-program-files-directories-to-a-different-partition/ 
Cette technique est indiqu�e � titre d'information. Je la d�conseille, � moins d'�tre absolument au courant de ce qu'on fait.
http://google.fr/search?num=99&q=D�placer+Mes+Documents+par+d�faut+et+par+script
http://www.chantal11.com/2010/02/deplacer-son-dossier-utilisateur-par-defaut-et-par-script-windows-7/
Un script pour d�localiser le dossier Public
Un script pour d�localiser "Mes Documents"
http://www.forum-seven.com/forum/topic4073.html
What's New in Folder Redirection and User Profiles
When you use the System Preparation Tool (Sysprep) or Windows Vista Setup to apply the FolderLocations unattend settings, some system directory junctions do not point to the new target location

http://www.tutoriaux-excalibur.com/forum-7/documents-and-settings-n-est-pas-accessible-acces-refuse-t999.html
http://google.fr/search?num=99&q=site:tutoriaux-excalibur.com/forum-7+"documents+and+settings"

Access Control : Understanding Windows File And Registry Permissions
Les nouvelles ACL am�liorent la s�curit� dans Windows Vista

 


 

Articles en relation

http://fspsa.free.fr/recursivite.htm
http://fspsa.free.fr/lettre-lecteur-amovible.htm
http://fspsa.free.fr/lettre-lecteur-amovible.htm#liens-relatifs
http://fspsa.free.fr/robocopy.htm

 

Annexe

Folder Shortcut

L'objet Folder Shortcut a pour CLSID {0AFACED1-E828-11D1-9187-B532F1E9575D}. Il permet, avec l'aide d'un fichier Desktop.ini accompagn� d'un raccourci Target.lnk d'obtenir un comportement ressemblant aux jonctions : en cliquant sur un dossier TOTO on ouvre un dossier cible TITI qui peut �tre situ� sur un autre volume. Le contenu du v�ritable dossier TOTO reste cach� (h�h�). Ce proc�d� permettra comme pour les jonctions de tromper Windows ou un programme, et de corriger ainsi certains probl�mes de d�localisation ou d'installation. Utilisable sur FAT32, c'est ind�pendant du syst�me de fichiers. C'est implant� sur tous les Windows.

Registre :
HKLM\SOFTWARE\Classes\CLSID\{0AFACED1-E828-11D1-9187-B532F1E9575D}
linktarget

Utilisation :
On cr�e dans le dossier A un raccourci nomm� TARGET (son nom complet est donc target.lnk) pointant vers un dossier B.
On ajoute dans le dossier A un fichier Desktop.ini dont le contenu est :

[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2
ConfirmFileOp=0

Il reste � donner l'attribut System au dossier A pour que celui-ci exploite son Desktop.ini avec la commande attrib +s "chemindudossier"
Pour retrouver le comportement habituel et pouvoir afficher le contenu de A (et non le contenu de B), retirer l'attribut.
On voit qu'on passera facilement d'un �tat � l'autre simplement avec cette commande attrib (faire des batchs).

Gilles Ronsin a cr�� un script automatisant la cr�ation des fichiers desktop.ini et target.lnk n�cessaires � la redirection :
http://gilles.ronsin.free.fr/#targetlnk
http://gilles.ronsin.free.fr/fichiers/targetlnk.vbs

Plus d'infos :
http://www.google.fr/search?num=100&q=0AFACED1-E828-11D1-9187-B532F1E9575D
http://www.google.fr/search?tbs=bks%3A1&q=0AFACED1-E828-11D1-9187-B532F1E9575D
http://www.hotline-pc.org/registreshell.htm
http://www.johnlandells.com/reparsing-folders-in-xp
Cet article compare les Shell Links aux Junctions : http://www.pearlmagik.com/winbolic/
System.Link.TargetParsingPath
The Shell Link Object and the Shell Folder Shortcut Object support being the host object of a shell instance object

 

 

 

Notes

http://fr.wikipedia.org/wiki/Captive_NTFS
http://www.ntfs.com/disk-scan.htm



 

compteur Free
Publi� le 21/9/2009