OVH Cloud OVH Cloud

[INFO]A propos du dossier $hf_mig$ : Comment le déplacer ...

24 réponses
Avatar
Jean-Claude BELLAMY
Hello happy Taxpayers !

Tous (ou presque!) les utilisateurs de XP et W2K3 (et SBS, WHS ...)
connaissent les dossiers "$NtUninstall....$" et "$hf_mig$", situés dans le
dossier %windir% (en règle générale "c:\windows")
Ils sont créés ou "alimentés" par tous les correctifs de Windows.

Les dossiers "$NtUninstall....$", qui contiennent les fichiers nécessaires à
la DÉSINSTALLATION de ces correctifs, PEUVENT être SUPPRIMÉS si on a décidé
définitivement de ne pas les désinstaller (ce qui se pratique toujours, sauf
bug notoire dans un correctif).
J'ai d'ailleurs écrit un script qui fait proprement et automatiquement cette
opération de suppression
(http://www.bellamyjc.org/fr/windows2000.html#Ntuninstall)

PAR CONTRE, le dossier "$hf_mig$" contient un ensemble de sous-dossiers
(ayant pour noms respectifs les articles associés de la base de
connaissances, p.ex. "KB941202") lesquels contiennent des copies des DLL (et
.SYS, .OCX, ...) MISES A JOUR par ces correctifs.

Le dossier "$hf_mig$" a donc pour rôle pour maintenir la cohérence dans les
dernières versions de DLL (au cas où l'installation d'un logiciel viendrait
à en remplacer), si bien qu'il NE FAUT PAS SUPPRIMER ce dossier !
NB: sa suppression ne se traduira par aucun message d'erreur, par contre on
risque de découvrir peu à peu des incohérences et dysfonctionnements
inexpliqués du système.


Cette interdiction de le supprimer est particulièrement GÊNANTE, car la
taille globale de ce dossier devient très importante (environ 300 Mo
actuellement)
Or il peut arriver que la partition du système soit saturée ...

Et l'emplacement de ce dossier est "en dur" (il doit obligatoirement être
dans %windir%)
Le problème semble donc insoluble, et pourtant ... :-)

... j'ai eu l'idée toute bête de faire appel aux "JONCTIONS" des partitions
NTFS, :
- en déplaçant "$hf_mig$" sur une autre partition (NTFS)
- en créant une JUNCTION de ce dossier à son
nouvel emplacement dans %windir% !
(à l'aide de l'outil de SysInternals)

Je décris la manip ici :
http://www.bellamyjc.org/fr/windowsxp2003.html#hf_mig

Et ainsi la morale est sauve ...
- $hf_mig$ ne prend plus de place dans %SystemDrive%
(la partition du système)
- $hf_mig$ est toujours disponible dans %windir% !



Et vive NTFS et Mark Russinovich ! ;-)


PS : cette méthode de transfert de dossiers volumineux + création de
JUNCTION peut être utilisée également pour plein d'autres applications
(p.ex. MSDN et son "méga" dossier "Microsoft Help" de plus de 450 Mo) sans
pour autant devoir bidouiller dans la BDR ou quoi que ce soit d'autre.


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org

10 réponses

1 2 3
Avatar
Daniel92
*Jean-Claude BELLAMY* écrit dans
<news:
|

| [...]
| Le dossier "$hf_mig$" a donc pour rôle pour maintenir la cohérence dans les
| dernières versions de DLL (au cas où l'installation d'un logiciel viendrait
| à en remplacer), si bien qu'il NE FAUT PAS SUPPRIMER ce dossier !
| NB: sa suppression ne se traduira par aucun message d'erreur, par contre on
| risque de découvrir peu à peu des incohérences et dysfonctionnements
| inexpliqués du système.
|
| [...]
|
| ... faire appel aux "JONCTIONS" des partitions NTFS, :
|
| - en déplaçant "$hf_mig$" sur une autre partition (NTFS)
| - en créant une JUNCTION de ce dossier à son
| nouvel emplacement dans %windir% !
| (à l'aide de l'outil de SysInternals)
|
| Je décris la manip ici :
| http://www.bellamyjc.org/fr/windowsxp2003.html#hf_mig
|
| Et ainsi la morale est sauve ...
| - $hf_mig$ ne prend plus de place dans %SystemDrive%
| (la partition du système)
| - $hf_mig$ est toujours disponible dans %windir% !
|
| [...]
|
| PS : cette méthode de transfert de dossiers volumineux + création de
| JUNCTION peut être utilisée également pour plein d'autres applications
| (p.ex. MSDN et son "méga" dossier "Microsoft Help" de plus de 450 Mo) sans
| pour autant devoir bidouiller dans la BDR ou quoi que ce soit d'autre.

Quelle liaison peut-on faire ? entre :

Points de montage (lié à mountvol.exe de MS et devmgmt.msc
via les chemins de montage des partitions)

Liens symboliques

Points de jonction (junction.exe de Sysinternals)

Hardlink (hardlink.exe de jcb , et FSUTIL.exe hardlink de MS)


SUBST (subst.exe de MS) Affecte une lettre de lecteur
à un chemin d'accès


http://www.bellamyjc.org/fr/theoriemultiboot3.html#points_montage
http://www.bellamyjc.org/fr/windows2000.html#mount

http://www.bellamyjc.org/fr/theoriemultiboot3.html#liens_symboliques

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx



J'utilise les points de Points de montage via devmgmt.msc et
qui sont d'ailleurs visibles via Junction de Sysinternals

C:>mountvol
...
?Volume{e317befe-79d6-11dc-b125-806d6172696f}
C:SWAP

?Volume{f0ea7cdc-79dc-11dc-b128-0090d0a8e952}
C:STIF
...
?Volume{b7d8c750-1ea4-11db-b0b2-806d6172696f}
K:Prs02
H:D1PMA

?Volume{be0012a2-7846-11db-ad23-0090d0a8e952}
K:T-NetTrans
K:U-DownCapt
H:D1PMB
...

visibles donc avec junction.exe :

I:...RSYSFO~1R$HF_M~1JUNCTI~1.05>junction -s c:s*

?c:STIF: MOUNT POINT
Substitute Name: Volume{a68efb6f-79ea-11dc-9e67-806d6172696f}

?c:SWAP: MOUNT POINT
Substitute Name: Volume{a68efb6e-79ea-11dc-9e67-806d6172696f}

..

I:...RSYSFO~1R$HF_M~1JUNCTI~1.05>junction k:*

?k:Prs02: MOUNT POINT
Substitute Name: Volume{b7d8c750-1ea4-11db-b0b2-806d6172696f}

?k:T-NetTrans: MOUNT POINT
Substitute Name: Volume{be0012a2-7846-11db-ad23-0090d0a8e952}

?k:U-DownCapt: MOUNT POINT
Substitute Name: Volume{be0012a2-7846-11db-ad23-0090d0a8e952}

I:...RSYSFO~1R$HF_M~1JUNCTI~1.05>junction h:*

?h:D1PMA: MOUNT POINT
Substitute Name: Volume{b7d8c750-1ea4-11db-b0b2-806d6172696f}

?h:D1PMB: MOUNT POINT
Substitute Name: Volume{be0012a2-7846-11db-ad23-0090d0a8e952}


J'avais laissé de côté, pour l'instant les liens symboliques
vers des dossiers , car je n'ai pas compris le chapitre de
http://www.bellamyjc.org/fr/theoriemultiboot3.html#liens_symboliques
http://www.bellamyjc.org/fr/theoriemultiboot3.html#hardlink

« ...inconvénient d'un raccourci ... il ne "passe" pas les réseaux
... Il n'y a pas cet inconvénient avec un "vrai lien symbolique",
... »

donc lien symbolique et fichier pourraîent être dans des
Partitions différentes. Ce qui semble contredit un peu
plus bas par :

« ...Une restriction : fichier (ou dossier) d'origine et lien
symbolique doivent résider sur le même disque logique »

cette dernière phrase parlant de " fichier ou dossier "
semble contredite par :

« ...La fonction Createhardlink ne permet de créer des
liens symboliques que vers des fichiers. »

Donc je ne sais pas si un lien symbolique, créé avec les
outils indiquées dans cette page (en dehors de junction.exe) ,
peut pointer aussi bien vers un fichier ou un dossier qui se
trouve sur une autre Partition ?

En quel Langage est écrit le programme cité en exemple
dans la Rubrique Hardlink ?


Merci par avance, si bien sûr tu as un peu
de temps pour éclairer ma lanterne,
--
Daniel92.
======
Avatar
Jean-Claude BELLAMY
"Daniel92" a écrit dans le message de
news:%
[...]
Quelle liaison peut-on faire ? entre :

Points de montage (lié à mountvol.exe de MS et devmgmt.msc
via les chemins de montage des partitions)


Permet de "monter" une PARTITION complète
P.ex. on monte la partition "k:" dans "d:mntpartition-k"

Liens symboliques
Points de jonction (junction.exe de Sysinternals)
Permet de monter un RÉPERTOIRE


Hardlink (hardlink.exe de jcb , et FSUTIL.exe hardlink de MS)
Permet de monter un FICHIER


SUBST (subst.exe de MS) Affecte une lettre de lecteur
à un chemin d'accès
Crée un ALIAS, sous forme d'un NOUVEAU lecteur "virtuel"

C'est la démarche inverse des jonctions et liens symboliques :
- Une jonction ou un lien permet de tout "ramener"
sous une MÊME unité de disque.
- Une commande SUBST "éclate" des composants d'une
même unité de disque en PLUSIEURS unités.



[...]
En quel Langage est écrit le programme cité en exemple
dans la Rubrique Hardlink ?
en C, tout bêtement ...



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org

Avatar
Gilbert_13MRS
Bonjour,

donc, si je pousuis le raisonnement, deluninstall ne sait pas que le dossier
est déplacé sur une autre partition. On peut donc supposer, à ce moment là,
que la défragmentation va s'opérer sur c: , _ET_ sur le dossier déplacé
dans la partition.

Est-ce correct ?

Merci.

"Jean-Claude BELLAMY" wrote:

"Gilbert_13MRS" a écrit dans le
message de news:
Bonjour,

et deluninstall ? Trouve-t-il aussi son chemin ?


La manip de migration + junction de $hf_mig$ ne concerne nullement
deluninstall !
Il ne peut donc en être affecté.

Et MÊME SI c'était le cas, le dossier $hf_mig$ étant toujours là, çà ne
changerait rien !
A moins de faire appel à des fonctions du style
"getFileInformationByHandle", une appli ignore si un répertorie est un vrai
répertoire ou une jonction vers un autre répertoire.


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org




Avatar
Gilbert_13MRS
Bonjour,

Le SP3 prévu pour 2008 devrait faire fondre à nouveau ce $hf_mig$.


Sous réserve que le sp3 propose ie 7 en option !

Ce qui n'est pas évident, bien que MS le propose en "stand alone".


"JF" wrote:

Salut JC
Quand on sauvegarde la partition, le dossier n'est plus sauvegardé avec
Windows je suppose. Et il faut refaire le lien symbolique lorsqu'on
recrée la partition. C'est bien ça ?

Le SP3 prévu pour 2008 devrait faire fondre à nouveau ce $hf_mig$.
C'est ainsi que ça a été observé avec les SP1 et SP2 ?

--
Salutations, Jean-François
Index du site de PN : www.d2i.ch/pn/az
Outlook Express : Suivez vos fils avec [CTL+H]
Montrez-nous ce que vous voyez : http://fspsa.free.fr/copiecran.htm





Avatar
Daniel92
*Jean-Claude BELLAMY* écrit dans
news:
|
| "Daniel92" a écrit dans le message de
| <news:%
| > [...]
| > Quelle liaison peut-on faire ? entre :
| >

| > Points de montage (lié à mountvol.exe de MS et devmgmt.msc
| > via les chemins de montage des partitions)
| >
| Permet de "monter" une PARTITION complète
| P.ex. on monte la partition "k:" dans "d:mntpartition-k"

Ce Point de Montage est un Point de Jonction; il est
vu en tant que tel à l'Invite de commandes :
<< dir /a "ma_recherche_avec_son chemin" >>

| > Liens symboliques
| > Points de jonction (junction.exe de Sysinternals)
| >
| Permet de monter un RÉPERTOIRE

| > Hardlink (hardlink.exe de jcb , et FSUTIL.exe hardlink de MS)
| >
| Permet de monter un FICHIER

| > SUBST (subst.exe de MS) Affecte une lettre de lecteur
| > à un chemin d'accès
| >
| Crée un ALIAS, sous forme d'un NOUVEAU lecteur "virtuel"
| C'est la démarche inverse des jonctions et liens symboliques :
| - Une jonction ou un lien permet de tout "ramener"
| sous une MÊME unité de disque.
| - Une commande SUBST "éclate" des composants d'une
| même unité de disque en PLUSIEURS unités.

| > [...]
| > En quel Langage est écrit le programme cité en exemple
| > dans la Rubrique Hardlink ?
| >
| en C, tout bêtement ...
|


Ok et Merci, Jean-Claude, pour la synthèse.


NB: je crains qu'il n'y ait un petit bug dans junction.exe de
Sysinternals car les Volume ID indiqués par lui

?c:STIF: MOUNT POINT
Substitute Name: Volume{a68efb6f-79ea-11dc-9e67-806d6172696f}

?c:SWAP: MOUNT POINT
Substitute Name: Volume{a68efb6e-79ea-11dc-9e67-806d6172696f}

sont ceux des anciens Points de Montage de mes Partitions
WinSTIF et WINSWAP
avant ou pendant la restructuration de mon Disque 0 ,
après vérification de mes clefs et sous-clefs :
HKLMSYSTEMMountedDevices
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2CPCVolume

Deux images de cette restructuration :

disque interne 0: au début de la restructuration
(après réduction de C: de 22,3 Go à 15 Go)
http://apu.mabul.org/apu-4-1havcjswl3mbaxksifsagpb5.png.html

disque interne 0: état actuel (071023) des Partitions
http://apu.mabul.org/apu-4-bqmwxgixh9sleo2rndhmaofy.png.html

--
Daniel92.
======
Avatar
Davch
Bonjour,

J'ai utilisé l'utilitaire "junction" avec succès pour ce dossier de windows.
Merci pour ces astuces incroyables !

Pour ma culture personnelle, comment fait on pour revenir proprement à une
situation normale pour ce dossier ?

En effet sur mon serveur 2003, des logiciels risquent de disparaitre (suite
à la saturation du disque systeme qui m'a ammené jusqu'ici !), et je pourrais
revenir à un vrai dossier dans "C:Windows"

Merci beaucoup
Avatar
Jean-Claude BELLAMY
"Davch" a écrit dans le message de
news:
Bonjour,

J'ai utilisé l'utilitaire "junction" avec succès pour ce dossier de
windows.
Merci pour ces astuces incroyables !


"incroyable" est un bien grand mot !!!
Il suffit de faire fonctionner ses petites cellules grises comme dirait
Hercule Poirot ! ;-)

Pour ma culture personnelle, comment fait on pour revenir proprement à une
situation normale pour ce dossier ?

En effet sur mon serveur 2003, des logiciels risquent de disparaitre
(suite
à la saturation du disque systeme qui m'a ammené jusqu'ici !), et je
pourrais
revenir à un vrai dossier dans "C:Windows"


C'est ultra-simple !
1) supprimer la jonction que l'on avait créée par la commande
junction -d %systemroot%$hf_mig$ <nom-du-dossier extérieur>
2) recréer le dossier %systemroot%$hf_mig$
3) copier (ou déplacer) les sous-dossiers du dossier extérieur
qu'on avait créé ailleurs,



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Jean-Claude BELLAMY
"Jean-Claude BELLAMY" a écrit dans le
message de news:
[...]
(j'ai cliqué trop vite sur "envoyer"!)

1) supprimer la jonction que l'on avait créée par la commande
junction -d %systemroot%$hf_mig$ <nom-du-dossier extérieur>
2) recréer le dossier %systemroot%$hf_mig$
3) copier (ou déplacer) les sous-dossiers du dossier extérieur
qu'on avait créé ailleurs,
dans le dossier %systemroot%$hf_mig$


(c'est évident, mais çà va mieux en le disant!)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Davch
Bonjour et merci encore pour votre réponse !

J'ai cependant une dernière question :

Est-ce que cette méthode fonctionne aussi pour le dossier
"C:WindowsInstaller" qui occupe lui aussi une place conséquente ?
(Peut-être peut-on supprimer des fichiers dans ce dernier ? J'ai notamment
des fichiers .tmp a l'intérieur comme par ex. "MSI2D.tmp" ...)

Merci
Avatar
Roger LEDIG
Bonjour

je ne suis pas ce fil, une partition système s'agrandit a condition d'avoir
de la place derrière bien sur hors fonctionnement et sans erreur.

Jean-Claude tu deviens malade ?

Cordialement

Roger


"Jean-Claude BELLAMY" a écrit dans le
message de groupe de discussion :
"Droopy191" a écrit dans le message de
news:471ccad5$0$12196$
Bonjour,

Dans le principe, ca correspond aux liens symboliques Linux ?



OUI, çà date de NTFS version de 3.0, apparu avec Windows 2000.
Donc ce n'est pas spécialement nouveau.
Et les applications de cette fonctionnalité étaient relativement rares
jusqu'à présent.
(Dans Linux, cette "redirection" de répertoires est très courante, p.ex.
tout de qui est "X11")

Mais face aux correctifs de plus en plus fréquents et volumineux de XP et
W2K3, des dossiers tels que $hf_mig$ ont "explosé", ce qui occasionne des
problèmes chez certains utilisateurs (j'en fait partie !!!), qui se
retrouvent avec une partition système trop petite et impossible à
redimensionner pour "x" raisons (j'ai encore eu un courrier perso
aujourd'hui à ce sujet).

Donc cette variante de "liens symboliques" tombe pile-poil pour résoudre
le pb.
Çà n'a rien de génial, mais c'est comme l'oeuf de Christophe Colomb, il
suffisait d'y penser ! ;-)



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org




1 2 3