web-dev-qa-db-fra.com

Déplacement de dossiers Windows avec des liens de jonction (mklink)

L'espace disponible sur mon disque SSD est relativement faible et il semble exister dans Windows un dossier de 19 Go (% windir%\Installer) qui ne puisse être supprimé en toute sécurité (comme expliqué ici: https: //serverfault.com/q/15746 ).

Maintenant, la mklink fournit une jolie petite chose appelée liens de jonction - si j'amorce dans l'invite cmd, et déplace tous les fichiers sur l'autre disque dur, puis lancez ceci:

mklink /J C:\Windows\Installer D:\Windows\Installer

Est-ce que je vais déranger mon Windows d'une certaine manière, ou est-ce une bonne chose à faire? Les autorisations/attributs de dossier resteront-ils les mêmes sur le lien?

J'ai déjà utilisé des liens physiques auparavant, et cela a fonctionné comme un charme, libérant mon disque SSD de manière significative, mais je ne l'ai jamais essayé sur des dossiers système (je ne vois pas pourquoi cela ne fonctionnerait pas, mais je ne suis pas dans la humeur de réinstaller des fenêtres entières au cas où je me trompe)

23
veljkoz

OK, j'ai pris le risque et cela en valait la peine - tout fonctionne normalement, mais j'ai libéré les 17 Go sur mon SSD maintenant.

Fondamentalement, les étapes sont les suivantes:

  1. Redémarrez votre PC, appuyez de façon continue sur F8 pour afficher le menu d’amorçage, puis choisissez "Invite de commandes avec mode sans échec" (pour vous assurer de pouvoir déplacer le dossier Windows).
  2. Une fois que la commande Invite est affichée, tapez la commande pour déplacer le dossier sur un autre lecteur:
    robocopy C:\Windows\Installer D:\Windows\Installer /MOVE /e
  3. Ensuite, créez un lien "Junction" pour le dossier manquant:
    mklink /J C:\Windows\Installer D:\Windows\Installer

Bien entendu, cela suppose que votre% WINDIR% est C:\Windows, que votre lecteur D est celui qui a le plus d’espace, que vous souhaitez définir votre destination dans "D:\Windows\Installer" (il peut s’agir de n’importe quel dossier). cohérent) etc ...

Cela devrait faire l'affaire.

28
veljkoz

En tentant de récupérer de l’espace sur mon disque principal, un disque SSD de 120 Go, j’ai trouvé ces instructions sur la façon de déplacer Users, Program Files, Program Files (x86) et ProgramData. Il inclut certaines modifications du registre "pour définir les emplacements par défaut", comme suit:

  1. Remplacez les lettres de lecteur des chemins répertoriés dans HKEY_LOCAL_MACHINE/LOGICIEL/Microsoft/Windows/CurrentVersion (par exemple, C:\Program Files\Common Files deviendrait D:\Program Files\Common Files).
  2. Remplacez les variables d'environnement %SystemDrive% par le chemin d'accès correspondant à HKEY_LOCAL_MACHINE/LOGICIEL/Microsoft/Windows NT/CurrentVersion/ProfileList (c'est-à-dire que %SystemDrive%\ProgramData deviendrait D:\ProgramData).
3
Adam Cox

Vous pouvez utiliser le même truc pour pagefile.sys et swapfile.sys (pas sûr si aussi pour hiberfile.sys, pas testé car je déteste hibernating sur multi-boot).

Assurez-vous simplement de désactiver la RAM virtuelle et de redémarrer avant de créer les liens symboliques, puis, après les avoir créés, réactivez la RAM virtuelle.

J'ai tendance à créer (avec le bloc-notes) un fichier vide sur le destin du lien avant de créer le lien.

Rappelez-vous: lorsque Windows 10 UpGrade supprimera les liens et mettra de vrais fichiers. Après UpGrades, vous pourrez répéter le processus.

Travailler jusqu'à Windows 10 version 1803.48, depuis Windows XP (le plus ancien que j'ai essayé).

2
Anonymous

J'ai pris des mesures similaires, mais je souhaitais pouvoir utiliser mon ordinateur pendant la copie du fichier (mon dossier faisait 40 Go).

  1. Copiez manuellement le dossier dans F:\Installer
  2. J'utilise Windows 8.1. Pour accéder à un démarrage en ligne de commande, je tenais Shift pendant que je cliquais sur Redémarrer, puis sur Avancé.
  3. Une fois dans la ligne de commande, je devais déterminer quelle lettre de lecteur utiliser (ce n'était pas C: bien que ce soit mon% SystemDrive% lorsque mon système d'exploitation est complètement démarré). J'ai dû utiliser echo list volume | diskpart pour découvrir que le lecteur C: était désormais désigné par E: et que le lecteur F: était toujours le lecteur F:
  4. J'ai supprimé les attributs masqués et système sur E:\Windows\Installer avec attrib -s -h E:\Windows\Installer et je l'ai renommé avec rename "E:\Windows\Installer" "Installer_old".
  5. Je pourrais alors créer la jonction avec mklink /J E:\Windows\Installer F:\Installer
2
kevinpo
  1. Copiez C:\Windows\Installer sur un autre disque tel que D:\C\Windows\Installer.
  2. Vérifiez et comparez les tailles des deux dossiers si le répertoire source sur C: n'a pas été modifié lors de la copie.
  3. Renommez le dossier sur le disque C:, par exemple. Installer => InstallerX
  4. Exécutez la commande en tant qu'administrateur et lancez la commande suivante:
    • mklink /d C:\Windows\Installer D:\C\Windows\Installer
  5. Attendez quelque temps (quelques jours) si tout va bien.
    • Si oui, vous pouvez supprimer sauvegarder le dossier C:\Windows\InstallerX.
    • Si non, supprimez symboliquement le dossier C:\Windows\Installer et renommez InstallerX en Installer, ou recopiez le dossier D:\C\Windows\Installer en C:\Windows\Installer.
1
Petr Voborník