Pull to refresh

Уменьшение размеров папки winsxs

Reading time 4 min
Views 882K
Многие обладатели Windows Vista и 7 наверняка сталкивались с тем, что папка Windows c ходом времени разрастается как на дрожжах. Я мирился с этим до тех пор, пока 40-гиговый раздел с системой не начал периодически выдавать мне сообщения о том, что свободное место на нем заканчивается.

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

0. Немножко теории


Вообще о том, как Windows использует пространство системного диска, сказано немало, поэтому здесь буду краток.

pagefile.sys — файл подкачки. Можно отключить при большом размере оперативки, можно отрегулировать размер вручную.

hiberfil.sys — файл, в который сохраняется снимок(снэпшот) оперативной памяти при «засыпании» компьютера. В меню «Очистка диска» кроме всего прочего есть пунктик «Очистка файлов режима гибернации». Если вы этим режимом не пользуетесь, можете очищать. Если же вы регулярно «засыпаете» свой комп/ноут, то, очистив этот файл, вам придется воспользоваться вот этим советом, или попросту ввести в командной строке powercfg -h on && shutdown -r.

Личные папки пользователей (Мои документы, Рабочий Стол, Appdata, Главное меню и проч.) можно безболезненно перенести в другое место как через свойства нужных папок, так и через regedit или групповые политики. Это разговор отдельный, здесь я его рассматривать не буду.

Нужно отметить, что любые апдейты и апгрейды в системе Windows обратимы, то есть установив Vista Service Pack 2 (6.0.6002), вы можете откатиться назад до 6.0.6001, а потом и до исходной сборки. Для того, чтобы сделать все установленные в системе обновления необратимыми, необходимо воспользоваться двумя системными утилитами:
vsp1cln.exe — подметает мусор после установки Vista SP1.
compcln.exe — делает то же самое для SP2.

Система создает точки восстановления по требованию и автоматически при установке драйверов, важных обновлений, по расписанию или по требованию. Восстановление использует до 15% пространства на каждом из дисков, на котором оно задействовано. Его можно отключить, можно через «Очистку диска» на вкладке «Дополнительно» оставить только последнюю точку восстановления для экономии места.

Про папку winsxs разработчиками была написана целая статья о том, что мол, это основное хранилище ОС, а все остальные системные файлы — это типа хардлинки, бла-бла-бла..., и да, примите как божий дар то, что со временем размер папки будет только увеличиваться.

1. Подготовка


Windows Vista Business 32-bit.
Сначала я выяснил размер папки winsxs — около 4,5 гигов.
Далее методично были установлены все важные и рекомендуемые обновления по состоянию на 8.10.2009, включая SP1 и SP2. После завршения всех процедур, я скачал чудесный Scanner, чтобы нагляно оценить масштаб бедствия.

Установка обновлений преобразила папку Windows.
image

Теперь по порядку:
— vsp1cln.exe;
— compcln.exe — работала около пяти минут.

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

2. Winsxslite


Это даже не программа — это .bat файл, уменьшающий размер папки winsxs. Он написан неким Christian Bering Boegh и распространяется «as is», что лично у меня вызвало некоторые подозрения, развеять которые мог лишь успешно отработавший скрипт. По ссылке можно найти последнюю версию скрипта (1.86) с комментариями автора.

Работа скрипта включает две фазы:
1. Поиск в папках Program Files и Windows файлов, идентичных файлам в winsxs.
2. Замена старых версий файла в winsxs жесткими ссылками на более новые версии файла.

Работать можно как с онлайн-системой (то есть с работающей ОС) так и с образом ОС.
Работа с онлайн-системой выглядит так:
— Phase 1 scan;
— Phase 1 apply;
— Перезагрузка;
— Phase 2 scan;
— Phase 2 apply;
— Перезагрузка.

image

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

Для работы скрипта используется также конфигурационный файл config.txt, в котором указаны исключения для первой фазы (логи, temp, cache и т.п.), и языковые приоритеты для второй фазы (неиспользуемые файлы локализации заменяются на хардлинки соответствующих файлов других языков), в конфигу по умолчанию прописывается «da-dk=KEEP», что меняется на нужную строку ru-ru=KEEP, uk-ua=KEEP или другую необходимую.

Winsxslite будет работать только при наличии следующего ПО:
SubInACL v5.2.3790.1180;
PendMoves v1.1 and MoveFile v1.0;
Ln — Command Line Hardlinks;
Fcmp v1.6 — автор рекомендует пользоваться именно 1.6;
MD5File;
StringConverter v1.2.

Все установленные файлы я сложил в папку с winsxslite. Если кому скучно выполнять все процедуры самому, вот ссылка. Там собственно winsxslite, всё необходимое ПО плюс конфиг с исправленным da-dk. Конфиг можно удалить. При первом запуске winsxslite будет создан дефолтный конфиг и help-файл.

3. Результаты


image

Взглянув на результаты, я понял, что совершил стратегическую ошибку — я взял для теста ноутбук, который почти не использовался в работе. То есть, возраст ОС составлял от силы пару дней, за ноутбуком фактически никто не работал. На домашнем же компе результаты были более ощутимыми. Там папка winsxs похудела гигов на 8, но до тех же самых 14,8.

Автор пишет, что эксплорер не выдает реального размера этой папки, и в его утилите можно узнать истинный размер.

Как бы то ни было, оба пациента не пострадали, а winsxslite оказался отличным подспорьем в деле уменьшения объема ненасытной винды.

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

P.S. Статья про использование дискового пространство в Win7. Никакие сторонние программы для кастрации системы (типа vLite) не использовались.
Tags:
Hubs:
+60
Comments 83
Comments Comments 83

Articles