Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat
By: Date: 13.09.2011 Categories: !RUS,WINDOWS
ENG: Decrease of the size of folder Winsxs in Windows 7 or how to use WinsxsLite.bat

Внимание!!! (предупреждения)

1) Описываемая процедура очень опасна для ОС, поэтому перед её применением необходимо сделать снимок диска или партиции с помощью Acronis True Image или подобной программы.

2) Процедура выполняется длительное время (часы) — поэтому планируй время.

3) Процедура не может обрабатывать файлы заблокированные какими-нибудь процессами. Более того, если процедура не сможет нормально обработать заблокированные файлы, резко возрастает риск что  потом что-то не заработает или система будет испорчена. Поэтому на время выполнения процедуры, необходимо закрыть все выполняющиеся приложения и остановить все возможные службы. Но еще лучше выполнять процедуру в save mode, т.к. в этом случае гораздо меньше файлов заблокировано системой.

———————————————————————————————————————- 

Вступление 

Ну вот опять столкнулся с нехваткой места на диск C: на домашнем компе.

Анализ с помощью программы FolderSizes показал, что больше всего места на диск занимает папка C:Windows, а в ней папка winsxs.

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

What is the WINSXS directory in Windows 2008 and Windows Vista and why is it so large?

Наткнулся на очень интересную статью (правда она для Vista, у меня 7)

Уменьшение размеров папки winsxs
©Bobrovsky Dmitry
Кстати, есть и официальная статья Microsoft по этой проблеме — How to Alleviate Disk Space Pressure Caused By a Large Windows Component Store (WinSxS) Directory — но рекомендации которые там даются стандартные и навряд ли помогут освободить место.
©Bobrovsky Dmitry
Оказывается, что папка winsxs – это основное хранилище системных файлов, на которое делаются hard-линки. Механизм работы с этим хранилищем далек от идеала (IMHO). Но некий парень Christian Bering Boegh написал WinsxsLite.bat, который перенаправляет ссылки на самую последнюю версию файла, а все остальные версии удаляет, еще перенаправляются и удаляются файлы ненужных языков.

Батник кстати крут, этот Кристиан просто монстр в написании батников, такое сотворить не каждый сможет…

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

Итак, утилиты vsp1cln.exe и compcln.exe я не делаю, т.к. у меня Windows 7, а они вроде как предназначены для Windows Vista.

Т.к. я скачал батник с набором всех необходимых утилит и Config.txt уже был вроде как правильно настроен, то осталось просто запустить батник. Если Config.txt нет, можно просто запустить батник и выбрать [q], Config.txt будет сформирован.

Я решил делать по алгоритму

Phase 1 scan
Phase 1 apply
Reboot
Phase 2 scan
Phase 2 apply
Reboot

Для начала определю размер папки winsxs (через проводник) – это для контроля.

Размер: 4,16 Гб
Размер на диске: 4,22 Гб
Файлов: 29752
Папок: 7037

Вообще автор батника утверждает что размер папки winsxs в проводнике считается неправильно. Поэтому будут в ходе эксперимента определять размер с помощью его батника (меню [w]).

———————————————————————————————————————

Поехали…

1) Скачиваю WinsxsLite.bat. (Если там уже нет можно поискать по WinsxsLite.bat).
Dmitry Bobrovsky
2) (Рисунок 1). Запускаю батник WinsxsLite.bat. При запуске ищутся файлы мультимедийные файлы примеров и формируется батник для их удаления DelWinsxsSampleMedia.bat (выполняю его — это освобождает 30Мб для меня). После этого смотрю размер папки winsxs — [w]. (Определение размера так же может быть длительным, на моем стареньком ноутбуке, примерно минут 15 шло).
Dmitry Bobrovsky
Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat

Рисунок 1.

3) (Рисунок 2). Далее выбираю [1] и [s] (scan), идет долгое сканирование (у меня порядка 1 часа). В результате формируется файл ToDo1.txt с результатами сканирования. После этого еще раз выбираю [1], но теперь меню становиться разнообразнее и я выбираю [a] (applay). Опять идет процесс (здесь уже быстрее минут 15-20).

Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat

Рисунок 2.

4) (Рисунок 3). После выполнения первой фазы — 18 pending hardlink. Делая первый раз, выполнил здесь [A]uto start, который нихрена не отработал на Windows 7. Делая второй раз выполнил Re[s]hchedule activation  — ЭТО РАБОТАЕТ, т.е. все линки были отработаны.

Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat

Рисунок 3.

5) (Рисунок 4). Проверяю размер. Я так понимаю что нужно ориентироваться на free space. Было 15064 Мб стало 15829 Мб = 765 Мб освободилось.

Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat

Рисунок 4.

6) Перезагрузка. Думаю что в ней нет необходимости, но на всякий случай…

7) (Рисунок 5). Запускаю батник WinsxsLite.bat и выбираю [2] и [s]. Идет процесс сканирования (гораздо быстрее чем в первой фазе, минут 10-15). Во время сканирования формируется файл ToDo2.txt. После сканирования  выбираю [2] и [a]. Идет процесс применения. На рисунке 5 видно что батник ругнулся что у меня ToDo2.txt устарел. Именно поэтому в документации говориться что лучше сканирование и применение делать в одно время иначе, если сделать скан, а потом через несколько дней применить результаты ToDo*.txt, его содержимое может стать неактуальным и система может быть испорчена.

Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat

Рисунок 5.

8) Перезагрузка.

9) Запускаю WinsxsLite.bat. Программа мне говорит что ОС не была перезагружена и требуется перезагрузка (с чего-бы это?). Ну да ладно перезагружаюсь еще раз.

10) Запускаю WinsxsLite.bat. Программа говорит что нужно обработать pending hardlink и предлагает сделать либо Auto start либо Exit. Делаю [A]uto start. Перезагружаюсь.

11) Запускаю WinsxsLite.bat. Срабатывает автостарт, чего-то делает.

Всё наконец-то всё завершено.

Смотрю размеры (Рисунок 6). 16278-15064= 1214 Мб. Ого целый гигабайт освободился.

Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat

Рисунок 6.

——————————————————————————————-

Можно еще сделать [R]elocate folders – позволяет переместить системные папки на другой диск. Полагаю этот пункт стоит использовать только в случае крайней нужды. Я его не делал.

И кстати по проводнику получается что места освободилось совсем мало и почему-то разница в 12 файлов… (Проводник реально неправильно показывает размер папки winsxs).

Размер: 4,14 Гб
Размер на диске: 4,20 Гб
Файлов: 29740
Папок: 7037

Впечатление о батнике в общем положительное, кроме немного запутанного интерфейса и самого процесса и еще очень долго конечно. Вот если переписать всё это под C# с многопоточностью, думаю стало бы работать быстрее.

Запись Уменьшение размера папки Winsxs в Windows 7 или как пользоваться WinsxsLite.bat впервые появилась Dmitry Bobrovsky Blog