Перемещение папок Windows с помощью Junction links (mklink)

22868
veljkoz

На моем SSD недостаточно свободного места, и в Windows, похоже, торчит папка размером 19 ГБ (% windir% \ Installer), которую нельзя безопасно удалить (как описано здесь: https://serverfault.com/q/15746 ).

Теперь mklinkесть небольшая вещь под названием Junction links - если я загружаюсь в командной строке cmd, перемещаю все файлы на другой жесткий диск и запускаю это:

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

Буду ли я портить Windows каким-то образом, или это нормально? Разрешения / атрибуты папки останутся неизменными по всей ссылке?

Раньше я использовал жесткие ссылки, и это работало как чудо, значительно освобождая мой SSD, но я никогда не пробовал его в системных папках (я не понимаю, почему он не работает, но я не в настроение переустановки целых окон на случай если я ошибаюсь)

23

5 ответов на вопрос

26
veljkoz

OK, I've taken the risk and it was worth it - everything works normally, but I have freed the 17GB on my SSD now.

Basically, the steps are:

  1. Restart your PC, press F8 continuously to bring up boot menu, and choose "Command prompt with safe mode" (this is to ensure you can move the windows folder around)
  2. Once the command prompt is shown, type the command to move the folder to another drive:
    robocopy C:\Windows\Installer D:\Windows\Installer /MOVE /e
  3. Next, create a "Junction" link for the missing folder:
    mklink /J C:\Windows\Installer D:\Windows\Installer

Of course, this assumes that your %WINDIR% is C:\Windows, that your D drive is the one with more space, that you want your destination in "D:\Windows\Installer" (it could be any folder, just be consistent) etc...

This should do the trick.

это работает в Windows 10? Syaiful Nizam Yahya 8 лет назад 0
Это должно - вся информация все еще применяется AFAIK. Если вы попробуете, дайте нам знать, как все прошло! veljkoz 8 лет назад 0
Работал на Windows 8 - очень круто, спасибо. Dunc 7 лет назад 0
Работал на Windows 10 - спасибо! Matthew Fritz 6 лет назад 1
Работал на Windows 7! glenviewjeff 6 лет назад 1
Помните, что это может вызвать проблемы при установке основных обновлений Windows (например, Windows 10 Fall Creators Update), поскольку узел будет заменен пустой папкой. 0xA3 6 лет назад 3
Не работал на Win7 с переходом: я запустил установщик программы после переезда. Это заняло больше, чем обычно, и тогда я понял, почему: Windows удалила все файлы, расположенные ниже `C: \ Windows \ Installer`, и заменила соединение обычной папкой, содержащей только последние файлы. Установщик был: `PatchCleaner_1.4.2.0.exe`. basin 6 лет назад 0
3
Adam Cox

При попытке освободить место на основном диске, на 120GB SSD, я нашел эти инструкции о том, как переместить Users, Program Files, Program Files (x86), и ProgramData. Он включает некоторые изменения в реестре «для установки местоположений по умолчанию», а именно:

  1. Замените буквы дисков на пути, перечисленные в HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion (например C:\Program Files\Common Files, станет D:\Program Files\Common Files)
  2. Замените переменные среды %SystemDrive%на путь к диску в HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows NT / CurrentVersion / ProfileList (то есть %SystemDrive%\ProgramDataстанет D:\ProgramData)
Примечание. Любые уже установленные приложения могут по-прежнему смотреть в старое местоположение, если их записи конфигурации / реестра указывают на местоположение, которое было разрешено до этого изменения. Переустановка этих приложений может решить проблему. TWiStErRob 6 лет назад 1
2
kevinpo

Я предпринял аналогичные шаги, но я хотел иметь возможность использовать мой компьютер, пока я делал копию файла (моя папка была 40 ГБ).

  1. Вручную скопируйте папку в F: \ Installer
  2. Я использую Windows 8.1, поэтому для загрузки из командной строки я удерживал клавишу Shift, нажимая кнопку «Перезагрузить», а затем «Дополнительно».
  3. Оказавшись в командной строке, мне пришлось выяснить, какую букву диска использовать (это был не C: хотя это мой% SystemDrive%, когда моя ОС полностью загружена). Мне пришлось использовать, echo list volume | diskpartчтобы выяснить, что диск C: теперь назывался E: а диск F: все еще был диском F:
  4. Я удалил скрытые и системные атрибуты в E: \ Windows \ Installer с помощью attrib -s -h E:\Windows\Installerи переименовал его с помощьюrename "E:\Windows\Installer" "Installer_old"
  5. Я мог бы тогда создать соединение с mklink /J E:\Windows\Installer F:\Installer
2
Anonymous

Вы можете использовать один и тот же трюк для pagefile.sys и swapfile.sys (не уверен, если также для hiberfile.sys, не проверял, так как я ненавижу гибернацию на мультизагрузке).

Просто убедитесь, что вы деактивировали виртуальный оперативный памяти и перезагрузите, прежде чем создавать символические ссылки, а затем после их создания реактивировать виртуального оперативного диска.

Я имею тенденцию создавать (с помощью блокнота) пустой файл по назначению ссылки до создания ссылки.

Помните: когда Windows10 UpGrade удалит ссылки и поместит реальные файлы, после UpGrades вы можете повторить процесс.

Работа до Windows 10 версии 1803.48, начиная с WindowsXP (самая старая, которую я пробовал).

1
Petr Voborník
  1. Скопируйте C:\Windows\Installerна другой диск, например D:\C\Windows\Installer.
  2. Проверьте и сравните размеры обеих папок, если исходный каталог C:не был изменен во время копирования.
  3. Переименовать папку на диске C:, например Installer=>InstallerX
  4. Запустите команду как администратор и запустите команду:
    • mklink /d C:\Windows\Installer D:\C\Windows\Installer
  5. Подождите некоторое время (несколько дней), если все в порядке.
    • Если да, вы можете удалить резервную копию папки C:\Windows\InstallerX.
    • Если нет, то удалите символическую папку C:\Windows\Installerи переименовать обратно InstallerXв Installer, или скопировать обратно в папку D:\C\Windows\Installerс C:\Windows\Installer.
Это дублирует другой ответ и не добавляет новый контент. Пожалуйста, не публикуйте ответ, если у вас нет чего-то нового. DavidPostill 8 лет назад 0