Меню Рубрики

Перенос winsxs на другой диск в windows 7

Назначение и свойства папки WinSxS в Windows, способы очистки и сжатия, перенос подпапки Backup

Здравствуйте уважаемые читатели блога www.ithabits.ru. Опубликованная в блоге около трех месяцев назад статья, посвященная способам уменьшения размера папки WinSxS в Windows, неожиданно стала абсолютным лидером читательского спроса по количеству ее просмотров.

К сожалению, на поверку причиной этого оказалась не только популярность самой темы, но и то, что народ упорно ищет ресурс, с которого можно скачать скрипт WinSxSLite 1.88, о котором я неосторожно упомянул в той публикации.

Попробую отговорить ищущих WinSxSLite от использования этого не беспроблемного командного файла и, в дополнение к рассмотренному в прошлой публикации способу уменьшения размера папки WinSxS, предложить еще один вариант плюс готовый скрипт “winsxscompact”, выполняющий все необходимые операции.

Во-первых, не ищите версию 1.88 – ее нет и, скорее всего, уже никогда не будет, так как проект некоторое время назад прекратил свое развитие.

Во-вторых, этот командный файл, безответственно рекламируемый как чудодейственное средство борьбы с размером WinSxS, скорее всего, не принесет желаемого результата. Даже если посчастливится довести его четырехпроходную работу до конца, то выигрыш свободного места на диске в результате окажется весьма небольшим.

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

Давайте еще раз коротко пробежимся по свойствам и особенностям папки WinSxS.

Назначение и особенности папки WinSxS в Windows

  • Папка WinSxS впервые появилась в Windows Vista. В ней содержится вся информация о конфигурации системы и ее компонентах.

По этой причине она имеет очень большое значение для правильной работы операционной системы. Чем больше программ и обновлений установлено, тем, в общем случае, будет больше объем содержимого WinSxS.

Несистемное удаление файлов из папки WinSxS, как и замена ссылок, которой занимается WinSxSLite, с очень большой вероятностью приведут к нарушению работы Windows. В некоторых случаях такого рода вмешательство будет для системы фатальным.

  • Главной особенностью папки WinSxS является присутствие в ней большого числа жестких символьных ссылок (hard links).

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

Именно поэтому все файловые менеджеры, начиная с Windows Explorer, показывают неправильный, сильно завышенный из-за повторного подсчета занимаемого файлами – жесткими ссылками места, размер папки WinSxS. Иными словами, не верь глазам своим.

По примерным оценкам, которые были сделаны в прошлый раз, жесткие символьные ссылки добавляют к объему этой папки около 40%. Очевидно, что эта цифра может быть различной на разных компьютерах, но суть при этом не меняется. По поводу подпапки “Backup”, расположенной внутри папки WinSxS, чуть ниже.

Таким образом, если Windows Explorer или FAR говорят, что объем папки WinSxS составляет, например, 10 ГБ, то на самом деле уникальных файлов (с которыми теоретически можно попытаться что-то сделать) в этой папке будет только около 6 ГБ. Все остальные – это файлы, разбросанные по другим системным папкам, таким, как Windows, Program Files, , Program Files (x86), ProgramData и так далее.

Это значит, что если даже совсем удалить из WinSxS файлы, представляющие собой ссылки на объекты системных папок, то в смысле места, занимаемого операционной системой Windows на жестком диске, ровным счетом ничего не изменится.

  • Системные инженеры Microsoft предприняли адекватные меры для того, чтобы прекратить бесконтрольный рост объема папки WinSxS.

В последних версиях Windows папка WinSxS растет уже совсем не так интенсивно, как когда-то в Windows Vista.

В частности, внутри этой папки есть подпапка Backup. В ней хранится информация для восстановления (откатов) системы. В последних версиях Windows появился механизм обслуживания этой подпапки, который ее периодически очищает.

Для информации: в только что установленной в VirtualBox 64-разрядной Windows 8.1 Preview после первого обновления папка WinSxS заняла 5,44 ГБ, подпапка Backup – 209 МБ. Это значительно меньше, чем в других версиях Windows. Возможно потому, что Preview, а может быть действительно что-то изменилось.

Если все сказанное выше не убедило вас в бесперспективности использования WinSxSLite и есть стойкое желание опасно поэкспериментировать, то вот ее версия 1.87 (пароль: ithabits.ru). Только перед тем, как запускать скрипт, еще раз подумайте о последствиях и обязательно предусмотрите варианты отката. Полный бекап системы в этом случае является обязательным!

Если кто рискнет, не сочтите потом за труд сообщить о результатах. Моя попытка применения WinSxSLite оказался на 100% отрицательной с последующим восстановлением системы из бекапа.

Что реально можно сделать для уменьшения объема папки WinSxS

Проверить наличие и удалить файлы отката установки сервисных пакетов

Для начала обратите внимание на размер подпапки Backup в папке C:\Windows\winsxs. Если она занимает заметно больше 0,5 ГБ, то это могут быть файлы, предназначенные для отката установки сервисных пакетов.

Эти файлы появляются в том случае, когда исходная операционная система была обновлена установкой сервисного пакета. Например, SP1 в Windows 7. Удалить эти файлы можно с помощью команды DISM.

DISM перечисляет, устанавливает, удаляет, настраивает и обновляет компоненты и пакеты в образах Windows.

Для этого в командной строке, запущенной от имени администратора, нужно выполнить следующую команду:
dism /online /Cleanup-Image /spsuperseded /hidesp
/online – задает работающую операционную систему как назначение;
/Cleanup-Image — выполняет операции очистки и восстановления;
/spsuperseded /hidesp — удаляет архивные файлы, созданные в ходе установки пакета обновления и скрывает пакет обновления в списке установленных обновлений.

Такое сообщение в процессе выполнения команды означает, что архивные файлы пакета обновления в системе не обнаружены:

Стало быть, уменьшить размер папки WinSxS и высвободить таким образом место на диске в моем случае не получится – удалять просто нечего. В противном случае можно было бы высвободить несколько гигабайт.

Обязательно читаем об изменениях в обслуживании папки WinSxS в Windows 7 после обновления KB2852386 от 8 октября 2013 года.

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

Как получить права на папку C:\Windows\WinSxS

Учитывая важность содержимого WinSxS для операционной системы, изначально полный доступ к ней имеет только пользователь TrustedInstaller. Группа «Администраторы» обладает правами исключительно на чтение и выполнение.

Начать надо все же с бекапа системы – мало ли что, вдруг что-то у вас пойдет не так.

Предоставить группе «Администраторы» необходимые для дальнейших манипуляций права можно в командной строке, или с помощью графических утилит Windows. Рассмотрим по очереди оба варианта.

В командной строке с правами администратора нужно последовательно выполнить следующие команды:

Первая сохранит разрешения (ACL) для всех файлов в каталоге C:\Windows\WinSxS и его подкаталогов в ACL-файл:
icacls C:\Windows\winsxs /save C:\Windows\aclwinsxs.txt /T — “C:\Windows\aclwinsxs.txt” – файл, в котором будут записаны ACL. Вы можете выбрать другой путь и название этого файла. В принципе, эту операцию можно и не делать, но хуже не будет.

Вторая принудительно назначит группу «Администраторы» владельцем каталога WinSxS и всех вложенных папок и файлов:
takeown /A /R /F C:\Windows\winsxs
Третья добавит администраторам права на полный доступ ко всем папкам и файлам в этой папке:
icacls C:\Windows\winsxs /T /grant Администраторы:(F)
Так как файлов очень много, выполнение команд займет определенное время. После завершения изменений все пользователи из группы “Администраторы” смогут добавлять, удалять и перемещать файлы в папке WinSxS.

Такой же результата можно получить в Windows Explrer. Для этого его нужно сначала запустить с повышенными привилегиями. В командной строке, запущенной от имени администратора (выбрать в контекстном меню по клику правой кнопкой мыши) нужно набрать “explorer” и нажать “Enter”. Все дальнейшие действия выполняем в открывшемся окне.

Заходим в папку Windows, находим каталог WinSxS и открываем его свойства правой кнопкой мыши. Далее “Безопасность” –> “Дополнительно” –> “Владелец”:

Как и в случае командной строки ждем завершения операции.

Теперь можно назначить группе “Администраторы” полные права на нужную нам папку. Закрываем окно с оповещением о смене владельца и переходим на вкладку “Разрешения” –> “Изменить разрешения”:

Выбираем группу “Администраторы”, отмечаем чекбокс “Заменить все разрешения …”, нажимаем “Изменить”. В открывшемся окне разрешаем полный доступ для группы “Администраторы”:

Нажимаем “ОК” и возвращаемся на предыдущий экран. Проверяем правильность сделанных изменений и нажимаем “Применить” или “ОК”. Соглашаемся с двумя предупреждениями системы, ждем завершения операции.

Теперь мы можем делать с содержимым папки WinSxS все, что захочется, главное не сделать того, что сильно не понравится Windows. Например, можно заняться переносом WinSxS\Backup на другой диск.

Перенос папки C:\Windows\WinSxS\Backup на другой диск

Пользователи часто задают вопрос о том, можно ли перенести папку WinSxS на другой диск. Ответ такой – всю папку перенести нельзя. Виной тому все те же жесткие символьные ссылки, которые могут существовать только в пределах одного дискового раздела.

Можно попробовать перенести подпапку Backup из WinSxS, так как она жестких символьных ссылок внутри себя не содержит, а только уникальные файлы. Убедиться в этом можно, например, с помощью файлового менеджера FAR, просмотрев содержимое подпапки в 9-м режиме одной из панелей программы.

Естественно, заниматься этим стоит только в том случае, когда размер подпапки Backup заслуживает внимания в принципе.

На моей рабочей машине с Windows 7 x64 файлы в WinSxS\Backup занимают около 0,6 ГБ. В Windows 8 примерно столько же. Если у вас эта папка имеет аналогичный объем, то, скорее всего, овчинка выделки не стоит. Кроме того, после ntfs-сжатия WinSxS размер этой папки уменьшится до

Как выяснилось, после переноса Backup из WinSxS на другой диск отказались устанавливаться некоторые обновления, например KB2849470, KB2862966 и другие. Бороться с этой неприятностью получается пока только временным возвратом папки Backup на исходное место.

Таким образом, на сегодняшний момент времени переносить Backup я не рекомендую и предлагаю сразу перейти к ntfs-сжатию.

Оставлю описание алгоритма переноса для энтузиастов, возможно, кто-то сумеет разобраться в чем тут дело.

До начала переноса WinSxS\Backup нужно установить все текущие системные обновления, так как в противном случае некоторые файлы в WinSxS\Backup окажутся заблокированными. Возможно даже имеет смысл обновления временно отключить.

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

У меня уже перенесено несколько системных папок на диск D:\. В их число входит Installer, MCOCache, Search. Сделано это было для того, чтобы освободить место на небольшом твердотельном накопителе SSD после установки на него системы Windows 7. Корневую папку для этих целей я назвал “SystemFoldersC”.

Скопируем папку C:\Windows\WinSxS\Backup в новое место с сохранением всех разрешений.

В командной строке для этого целесообразно воспользоваться командой:
xcopy C:\Windows\WinSxS\Backup X:\SystemFoldersC\WinSxS\Backup\ /E /H /O /X Здесь X:\SystemFoldersC\WinSxS\Backup – диск и название нового местоположения файлов из папки Backup.

Если пользоваться xcopy, то конечные папки можно заранее не создавать.

Интересно отметить, что команда “robocopy”, которую я наряду с “xcopy” рекомендовал использовать для переноса профилей пользователей на другой диск, в данном случае отказалась добавлять в разрешения конечной папки системного пользователя «TrustedInstaller», не смотря на указание ключа /COPYALL. Это неправильно и для нашего случая недопустимо.

Из графических утилит для этой цели можно использовать опять же файловый менеджер FAR:

Вместо вложенных каталогов в новом местоположении можно сделать одну папку с названием, например, WinSxSBackup, как показано на рисунке. “Говорящее” имя нужно для того, чтобы в дальнейшем (когда через пару недель забудете что и зачем делали ) вспомнить о ее назначении. Впрочем, это дело вкуса и предпочтений.

После завершения копирования удаляем подпапку Backup из C:\Windows\WinSxS и создаем на ее месте символьную ссылку:
mklink /D C:\Windows\WinSxS\Backup\ X:\SystemFoldersC\WinSxS\Backup\
Символьные ссылки очень удобно делать в FAR по Alt+F6. Если название конечной папки было изменено, то сразу после создания ссылки ее нужно переименовать в “Backup”.

Как восстановить права на папку C:\Windows\WinSxS и сделать ее владельцем системный сервис TrustedInstaller

После завершения операций переноса WinSxS\Backup\ на другой диск имеет смысл вернуть прежние разрешения на папки и файлы.

Вернуть TrustedInstaller владение каталогом WinSxS можно следующей командой:
icacls C:\Windows\winsxs /setowner «NT Service\TrustedInstaller» /T /L /C
Для того, чтобы предоставить группе “Администраторы” права только на чтение и выполнение, нужно выполнить такую команду:
icacls C:\Windows\winsxs /T /L /grant:r Администраторы:(RX)
Если на первом шаге работы в командной строке ACL были сохранены, то вместо этой команды можно сделать восстановление разрешений из ранее созданного файла:
icacls C:\Windows /restore C:\Windows\aclwinsxs.txt /L /C
То же самое можно сделать и в Windows Explorer описанным выше путем в следующем порядке.

Сначала заходим в свойства папки WinSxS –> “Безопасность” –> “Дополнительно” –> “Владелец”. Последовательно нажимаем “Изменить” –> “Другие пользователи и группы”:

В поле выбираемых объектов вводим NT SERVICE\TrustedInstaller и нажимаем “OK”.

В окне “Дополнительные параметры безопасности” выделяем появившегося в списке TrustedInstaller ставим галочку в чекбокс “Заменить владельца подконтейнеров и объектов” и нажимаем “OK”. Дожидаемся завершения операции и закрываем все окна.

Переходим на вкладку “Разрешения”. Нажимаем “Изменить разрешения” –> “Изменить”:

Выставляем права как показано на рисунке. Нажимаем “ОК”.

Не забываем поставить галочку в чекбокс “Заменить все разрешения дочернего объекта …“, нажимаем “ОК”. Дожидаемся завершения операции. Если в процессе выполнения появятся ошибки, игнорируем их.

Теперь разрешения на папку WinSxS полностью соответствуют исходным.

NTFS-сжатие уникальных файлов в папке C:\Windows\WinSxS

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

Алгоритм сжатия уникальных файлов в папке WinSxS подробно описывался в предыдущей статье.

Сегодня я хочу предложить вам маленький подарок, а именно, готовый командный файлwinsxscompact.cmd”, который выполнит все необходимые операции.

Для того, чтобы скачать скрипт нужно просто подписаться на обновления блога по E-Mail. Ссылка на скачивание будет в почтовом подтверждении подписки.

Командный файл “winsxscompact.cmd” написан для русских версий Windows 7 / 8 /8.1 (В Windows Vista не тестировался, но должен работать).

Его нужно сохранить в любой папке компьютера, которая вам больше нравится, разархивировать с паролем “ithabits.ru” и запустить от имени администратора (“Запуск от имени администратора” в контекстном меню по правой кнопке мыши).

Наберитесь терпения – на выполнение необходимых операций потребуется заметное время. Дождитесь появления в окне “FINISH — работа командного файла успешно завершена…».

В процессе тестирования скрипта выигрыш места на диске C:\ после сжатия уникальных файлов в WinSxS составил от 1,4 ГБ в только что установленной в VirtualBox системе Windows 8 х64 до 2,3 ГБ на рабочем компьютере с Windows 7 x64. Это больше, чем после WinSxSLite, а главное, совершенно безопасно. Если по какой-то причине полученный результат не удовлетворяет, можно легко вернуть все в исходное состояние.

После завершения сжатия файлов в папке WinSxS сделайте дефрагментацию диска С:.

Надеюсь, что никаких проблем с использованием командного файла не возникнет. Будут вопросы – задавайте. Обязательно сообщите о полученном результате.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Перенос windows xp на другой жесткий диск acronis
  • Перенос windows server 2012 r2 на другой компьютер
  • Перенос windows server 2008 r2 на другой диск
  • Перенос windows server 2008 r2 на другое железо
  • Перенос windows server 2003 на windows server 2008