1

Я искал список подробных действий в Windows 7 для перемещения папки winsxs на жесткий диск с данными и создания соединения в SSD с

mklink /J oldpath newpath

Я мог только найти это, что связано с вопросом суперпользователя (можно ли переместить winsxs и если да, то как?), Но это для Vista и было опубликовано в ... 2007:

Как переместить каталог WinSxS в Vista

Я также нашел эти ответы здесь на суперпользователя:

  1. В Windows 7 я могу создать Symlink или Junction для папок winsxs или установщика? В этом вопросе суперпользователя пользователь спрашивает, могут ли они сделать mlink на папку winsxs после перемещения ее на другой диск, и ответ « вы можете сделать это для установщика ". Но вопрос был, можете ли вы сделать это для winsxs? Особенно после первого комментария к вопросу о том, что «это невозможно сделать, потому что это уже" символические ссылки ".

  2. Как освободить место на диске из папки установщика Windows, не убивая Windows? Это для папки Windows/Installer , НЕ winsxs и использует параметр /D вместо параметра /J в mlink . Но они делают то, что я хочу сделать с winsxs: скопируйте содержимое папки на другой диск, затем выполните mklink /D oldpath newpath . Но могу ли я сделать это с помощью winsxs? (связанный блог также не перемещал папку winsxs, они только перемещали другие папки). Кроме того, комментаторы связанного сообщения в блоге сообщают, что они не могли перейти от привилегий администратора к привилегиям SYSTEM, что является первым шагом перед выполнением команд или перемещением папок.

  3. Как освободить место на диске из папки установщика Windows, не убивая Windows? Другой комментатор в предыдущей ссылке суперпользователя говорит, что если вы сделаете соединение,

msiexec (очевидно) игнорирует соединение и вручную создает C:\Windows\Installer. Это 1) удаляет перекресток и 2) полностью удаляет содержимое целевого каталога. "

Может ли это случиться и с папкой winsxs ?

Итак, подведем итоги:

Я хочу переместить папку winsxs и затем создать соединение с ней, но я не уверен, смогу ли я сделать это или последствия этого.

  • Будут ли те шаги, написанные для Vista в 2007 году, которые я связывал в начале, работать для Win 7?
  • Является ли пользователь, который говорит, что «это невозможно сделать, потому что это" уже "символические ссылки, верно?
  • Если в Windows 7 шаги Vista по перемещению папки и созданию соединения не будут работать, сработают ли те, которые описаны в связанном блог-посте пункта 2? Как правильно изменить привилегии с Admin на SYSTEM без получения сообщений об ошибках?
  • Если мне удастся создать соединение, будет ли msiexec игнорировать соединение и вручную создавать C:\Windows\winsxs, удаляя соединение и полностью удаляя содержимое целевого каталога?
  • Какой вариант я бы использовал, /J (соединение) или /D (ссылка на символическую ссылку)? Я предполагаю /J , и я знаю разницу между ними, но так как другой вариант также появился в ответе, я больше ничего не знаю. Различные варианты появляются в разных источниках. Кто прав?

1 ответ1

2

Самое важное, что вы должны знать о WinSxS:

Он не занимает столько места, сколько показывают его свойства.

Скриншот свойств WinSxS

WinSxS содержит в основном жесткие ссылки. Жесткая ссылка похожа на символическую ссылку, но она намного прозрачнее.

Файлы хранятся не на жестком диске в виде дерева, а в виде плоской структуры. Элементы из этой структуры затем отображаются в дерево папок и им присваиваются имена. Каждое такое отображение представляет собой одну жесткую ссылку. Так что жесткая ссылка - это то, что связывает имя файла и путь к содержимому файла.

Большинство файлов имеют только одну жесткую ссылку. Например, когда вы загружаете файл, его содержимое сохраняется где-то на жестком диске, а именная жесткая ссылка создается в C:\Users\<yourUsername>\Downloads .

Вы можете создать дополнительную жесткую ссылку, если хотите, либо в том же каталоге (с другим именем файла), либо в другом месте на том же диске. Содержимое файла будет сохранено на диске только один раз, поэтому создание второй жесткой ссылки не увеличит использование диска. Файл будет доступен по двум путям. Обе эти жесткие ссылки будут иметь общие свойства, даты изменения и содержимое файла. Любые изменения в одном файле немедленно вступают в силу для второго. Файл не будет удален из плоской структуры, пока все его жесткие ссылки не будут удалены, поэтому удаление жесткой ссылки оставит файл без изменений, если это не последняя жесткая ссылка. Жесткие ссылки неотличимы друг от друга, вы не можете сказать, какая из них была создана первой. Они оба полностью эквивалентны. (В отличие от символических ссылок, где есть один "главный" файл.)

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

Теперь давайте проведем эксперимент. Я создам две папки, затем файл размером 64 КБ в одной из них и жесткую ссылку на этот файл во второй.

C:\Users\gronostaj\Desktop\experiment>mkdir A B

C:\Users\gronostaj\Desktop\experiment>fsutil file createnew A\hardlink1 65536
File C:\Users\gronostaj\Desktop\experiment\A\hardlink1 is created

C:\Users\gronostaj\Desktop\experiment>mklink /h B\hardlink2 A\hardlink1
Hardlink created for B\hardlink2 <<===>> A\hardlink1

У нас есть дерево папок, подобное этому:

+ experiment
|-+ A
| `-- hardlink1
`-+ B
  `-- hardlink2

Вот свойства A, который содержит одну жесткую ссылку на файл размером 64 КБ:

Свойства A, показывающие общий размер 64 КБ

Выглядит вполне законно. Свойства B, который также содержит одну жесткую ссылку на тот же файл размером 64 КБ:

Свойства B, показывая общий размер 64 КБ

Это тоже хорошо. Теперь я выберу A и B и посмотрим, сколько места они занимают в соответствии со свойствами:

Свойства A и B, показывающие общий размер 128 КБ

... и это окно лжет нам. Существует только один физический файл, который занимает 64 КБ. Однако Windows Explorer этого не знает - он подсчитывает общий размер файлов, на которые указывают жесткие ссылки, и есть две жесткие ссылки на файлы размером 64 КБ. Вот почему он считает, что эти папки занимают вдвое больше места, чем на самом деле. Не доверяйте размеру папки в свойствах.

WinSxS содержит жесткие ссылки на системные файлы, которые Windows когда-то использовала. Когда системный файл установлен, он жестко связан в основном месте и в WinSxS. В недавно установленной системе Windows размер WinSxS составляет несколько ГБ, но его эффективный размер равен нулю, поскольку он содержит только файлы, которые жестко связаны где-то еще.

Когда системный файл заменяется (например, Центром обновления Windows), он удаляется из основного расположения и на его место устанавливается новый файл. Этот новый файл также жестко связан в WinSxS. На данный момент Windows использует только более новую версию файла, но ваш жесткий диск содержит две версии, одна из которых больше не используется. Это на самом деле заставляет WinSxS расти.

Почему Windows это делает?

  1. Обновления могут быть легко удалены - старые файлы все еще там, ожидая вас в WinSxS.
  2. Windows может автоматически исправить некоторые проблемы с поврежденными файлами, потому что хорошие копии хранятся в WinSxS. Это то, что делает sfc /scannow .

На этом этапе мы можем заключить, что мы не можем переместить WinSxS на другой диск, потому что некоторые файлы внутри жестко связаны где-то еще в C:\Windows . Вы можете скопировать их на другой диск и создать соединение, но это увеличит общее использование диска (дополнительные жесткие ссылки не занимают места, дополнительные копии занимают) и, вероятно, сломают WinSxS.

Единственный разумный способ уменьшить размер WinSxS - удалить неиспользуемые старые версии файлов. Это можно сделать с помощью инструмента « Очистка диска» (который доступен в Windows), установив флажок « Очистка Центра обновления Windows» . Если он не отображается в разделе «Очистка диска», значит, WinSxS уже сжат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .