Как уменьшить объем папки? Уменьшение размеров папки winsxs Уменьшение winsxs.

Многие обладатели 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.

Теперь по порядку:
- 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;

Для работы скрипта используется также конфигурационный файл 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 ;
- - Command Line Hardlinks;
- Fcmp v1.6 - автор рекомендует пользоваться именно 1.6;
- MD5File ;
- StringConverter v1.2 .

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

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

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

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

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

P.S. про использование дискового пространство в Win7. Никакие сторонние программы для кастрации системы (типа vLite) не использовались.

Начнем с самого противоречивого вопроса. Windows создает на системном диске файл подкачки (который еще иногда не совсем корректно называют свопинг-файлом). Изначальный размер этого файла определяется объемом оперативной памяти — чем ее больше, тем больше файл подкачки.

Этот файл носит имя «Pagefile.sys» и хранится по умолчанию в корневом каталоге системного диска. Его можно уменьшить или переместить на диск с данными. И тот, и другой вариант имеют массу плюсов и минусов, а о расчете правильного размера файла подкачки я мог бы написать целую статью, но как-нибудь в другой раз.

Чтобы изменить настройки файла подкачки, нажмите кнопку «Параметры» (Settings) в разделе «Быстродействие» (Performance) на вкладке «Дополнительно» (Advanced) окна «Свойства системы». В появившемся диалоговом окне «Параметры быстродействия» (Performance Options) откройте вкладку «Дополнительно» (опять) и нажмите кнопку «Изменить» (Change) в разделе «Виртуальная память» (Virtual Memory).

Для начала снимите флажок «Автоматически выбирать объем файла подкачки» (Automatically Manage). После этого станут доступны все прочие опции.

Поскольку мой компьютер не испытывает недостатка в оперативной памяти, я ограничил исходный размер файла подкачки 1024 мегабайтами, позволив ему расширяться до 4 Гбайт при необходимости. Изменив настройки, не забудьте нажать кнопку «Задать» (Set).

Чтобы переместить файл подкачки на другой диск, выберите опцию «Без файла подкачки» (No Paging File) и нажмите кнопку «Задать». Затем выберите в списке нужный диск и укажите размер либо выберите опцию «Размер по выбору системы» (System Managed Size). Нажмите «Задать».

Файл гибернации

Windows поддерживает два режима экономии энергии: сон и гибернация. Последний актуален главным образом для ноутбуков. Настольные компьютеры в гибернации, как правило, не нуждаются, особенно если имеют надежное бесперебойное питание.

При гибернации система создает скрытый файл «hiberfil.sys», который хранится в корневом каталоге системного диска. По умолчанию, он использует 75% доступного дискового пространства.

Если компьютер оснащен диском маленького объема, гибернацию можно отключить из командной строки с правами администратора. Для этого введите в строке поиска меню «Пуск» ключевое слово «cmd» (без кавычек) и нажмите ++. В появившемся окне командной строки введите команду powercfg -h off и нажмите (включить гибернацию можно той же командой, но вместо off нужно подставить on). Из командной строки можно также проверить размер файлов подкачки и гибернации, воспользовавшись командой dir c:\ /as.

Восстановление системы

Функция «Восстановление системы» (System Restore) позволяет при необходимости вернуть прежние системные настройки, а также сохраняет предыдущие версии важных файлов. Для этого система периодически создает точки восстановления — мгновенные снимки текущего состояния системы. Эта информация, естественно, сохраняется на системном диске и занимает драгоценное место. В принципе, создание точек восстановления можно полностью отключить, но я бы не советовал этого делать. Лучше ограничить пространство, выделенное для их хранения.

Для этого откройте диалоговое окно «Свойства системы» и выберите вкладку «Защита системы» (System Protection). Выделите в списке системный диск (C:) и нажмите кнопку «Настроить» (Configure). В появившемся диалоговом окне можно настроить использование дискового пространства. Я, как видите, выделил под точки восстановления всего 3% от общего объема диска. Этого хватит для сохранения нескольких точек восстановления, чего вполне достаточно для отката к предыдущему состоянию системы при возникновении проблем.


Индекс файлов

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

1. На диске с данными создайте новую пустую папку для файлов индекса. В моем примере это папка «Index» на диске «X:».

2. В строке поиска меню «Пуск» введите ключевое слово «индекс» (без кавычек). В списке результатов выберите «Параметры индексирования» (Indexing Options).

3. В появившемся диалоговом окне нажмите кнопку «Дополнительно».

4. В разделе «Расположение индекса» (Index Location) указано текущее размещение файлов индекса — по умолчанию «C:\ProgramData\Microsoft». Нажмите кнопку «Выбрать новое» (Select New) и выберите папку, созданную в п.1. Нажмите «OK».

Как очистить папку WinSxS в Windows 7

Совет перед очисткой

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

Инструкции

Они предельно просты:

Установите обновление KB2852386 посредством Windows Update (рекомендую) или скачайте в IE пакет из статьи базы знаний.
Выполните cleanmgr в командной строке, запущенной от имени администратора (так будет быстрее).
Найдите в списке опцию «Очистка обновлений Windows».


Примечание. Пункт очистки обновлений доступен только в том случае, когда есть файлы, которые можно удалить.
Нажмите ОК и наберитесь терпения, потому что операция займет некоторое время.
По окончании очистки перезагрузитесь и посмотрите в свойствах диска, сколько места освободилось.
Как работает очистка папки WinSxS в Windows 7

Я очень подробно разбирал весь процесс применительно к Windows 8 и 8.1, поэтому не буду повторяться, а лишь отмечу несколько моментов.

Реализация

Обновление KB2852386 заменяет всего один файл — Scavengeui.dll, в котором реализована вся работа по очистке. Фактически, в утилиту «Очистка диска» добавили вызов функции DISM, доступной в более новых ОС при использовании в утилите DISM.exe параметра /StartComponentCleanup (но не дополнительного ключа /ResetBase).

Как грамотно уменьшить размер папки WinSxS в Windows 7 SP1
Увеличить рисунок

Так, при каждом запуске утилиты «Очистка диска» в папку %LocalAppData%\Temp\{GUID} зачем-то копируется содержимое папки %WinDir%\System32\DISM (причем временная папка не удаляется после завершения операции). После чего с помощью обновленной DLL осуществляется программный вызов функции глубокой очистки непосредственно из утилиты. Впрочем, копирование папки DISM наблюдалось еще до выхода KB2852386.

Как грамотно уменьшить размер папки WinSxS в Windows 7 SP1


Неясности

Есть основания полагать, что алгоритм очистки в Windows 7 не совсем такой же, как в Windows 8 и выше с ключом /StartComponentCleanup. В частности, у меня и у читателей пока не выявилось сжатия файлов, несмотря на идентичность текстового описания в утилите cleanmgr. Проверьте у себя и напишите в комментариях!

Еще один непонятный нюанс — это загадочная фраза в статье базы знаний (перевод - мой):

Therefore, after you run the Disk Cleanup wizard, you may be unable to roll back to a superseded update.
После очистки диска у вас может не быть возможности откатиться к обновлению, замененному более свежим.
И нигде не объясняется, от чего зависит эта возможность:) В моем эксперименте у всех обновлений возможность удаления сохранилась, как и должно быть при использовании ключа /StartComponentCleanup в Windows 8 и новее. Возможно, со временем конкретика и появится…

Наконец, не совсем понятно, что мешало реализовать это раньше, и почему обновление появилось именно сейчас. Кстати, перенос очистки в утилиту DISM.exe Windows 7 пока не планируется, что не позволяет обрабатывать автономные образы. Возможно, такой перенос вскрывает целый пласт вопросов поддержки, связанных с обслуживанием образов.

Судя по количеству поисковых запросов, многие пользователи Windows ищут способ уменьшить размер системной папки WinSxS . Об эту папку, которая через некоторое время после начала эксплуатации операционной системы Windows начинает занимать на диске достаточно много места, было сломано немало копий. Народ по-разному пытался бороться с ее размерами, однако, не всегда успешно.

На самом деле, истинный размер папки WinSXS не совсем тот, который показывают файловые менеджеры: Explorer, FAR и другие, или утилиты, наподобие Scanner. А точнее было бы сказать, – совсем не тот. Виноваты в этом жесткие ссылки (Hard Links ). Но об этом чуть ниже.

Каталог WinSXS имеет очень большое значение для функционирования операционной системы Windows. Хранятся в этом каталоге, по большей части, динамические библиотеки DLL, но не только. Причем, одна и та же динамическая библиотека может быть сохранена несколько раз в разных версиях.

Записывают их инсталляторы программ и системных обновлений, а вот удалять старые версии файлов никто не торопится. Получается что-то вроде полупроводника — движение только в одну сторону. Могу лишь предположить, почему так происходит. Деинсталляторы, очевидно, не могут определить, нужны ли использовавшиеся программой динамические библиотеки кому-либо еще, и не трогают их.

Способы уменьшения размера папки WinSxS

Удаление файлов

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

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

Скрипт Winsxslite

Большое количество публикаций представляют командный файл от Christian Bering Boegh как чудесное средство уменьшения размера WinSxS. Однако, последнюю заявленную версию WinsxsLite — 1.88 скачать уже не получилось. Видимо, с проектом Winsxslite не все так хорошо.

Смысл работы этого многопроходного скрипта заключается в поиске самых свежих версий библиотек и создании ссылок на них со всех предыдущих с последующим удалением последних.

Ну что же, тут по крайней мере есть идея. Однако, она не гарантирует 100-процентного положительного результата. Я поддался соблазну, потратил достаточно много времени и получил совершенно отрицательный результат. Скрипт отработал первую фазу и «сломался» на второй. После требуемой, по алгоритму работы этого командного файла, перезагрузки компьютера напрочь отказалась работать системная утилита subinacl. На этом все и закончилось. Коль уж сам скрипт не может отработать после внесенных им изменений, то о чем тут вообще можно говорить.

Если есть желание непременно воспользоваться пакетным файлом WinsxsLite, то в обязательном порядке сделайте предварительно бекап системы!

NTFS-сжатие файлов в папке WinSxS

Если сделать, в общем-то, необоснованное предположение о том, что файлы, размещенные в папке WinSxS, используются системой не так часто, как файлы из других системных папок, таких как: Program Files, ProgramData, system32 и др., то почему бы не попробовать сделать их ntfs-сжатие ? Результат заранее не очевиден, но, по крайней мере, это совершенно безопасный вариант.

Microsoft постаралась максимально защитить папку WinSxS от всяческих посягательств на нее извне. Если открыть закладку «Безопасность» в свойствах папки, то можно увидеть, что только пользователь «TrustedInstaller» имеет полный доступ. Все остальные, включая «Система» и «Администраторы», приравнены к рядовым пользователям с правами на чтение и выполнение.

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

Запускаем командную строку с правами администратора и последовательно выполняем следующие команды:
takeown /A /R /F C:\Windows\winsxs\* В результате владельцем папок и файлов в WinSxS станет группа пользователей «Администраторы».
icacls C:\Windows\winsxs\* /T /grant Администраторы:(F) Результатом будет добавление прав полного доступа на все папки и файлы в WinSxS.

Не хочется подробно расписывать значение ключей команд. Кому интересно – посмотрите по /? в командах, все достаточно очевидно.

Теперь можно сделать сжатие файлов, но не торопитесь и дочитайте статью до конца.

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

Мы уже несколько раз обращались к теме символьных ссылок, которые использовали для переноса каталогов пользователей на другой диск. (См. «Перенос Windows 7 на твердотельный диск …» и ).

Тогда мы использовали обычные символические ссылки (Symbolic link), которые представляют собой специальные файлы, содержащие указатели на объекты в файловой системе. При попытке обратиться к объекту, в качестве которого может выступать файл или папка, символьная ссылка передает действительный путь к нему.

В папке WinSxS для файлов используется разновидность символической ссылки, которая называется жесткой ссылкой (Hard Links ).

Target - путь к реальному объекту (относительный или абсолютный).

Название этого типа ссылок, в какой-то степени, говорит само за себя – штука это жестокая. Hard Link создает абсолютно равноправный исходному указатель на файл. Новый указатель и первоначальный могут иметь разные имена и находиться в разных каталогах (в пределах одного раздела), но они указывают на один и тот же объект. Сам объект будет существовать в файловой системе до тех пор, пока на него существует хотя бы один указатель.

После создания жесткой ссылки невозможно определить, какая из ссылок на объект была исходной. Вот тут-то и кроется причина неправильного вычисления объема папки WinSxS файловыми менеджерами. Они включают в расчет суммарный размер всех файлов из других системных папок, на которые имеются жесткие ссылки (а с другой стороны, как иначе? Ссылки то равноправны).

Со ссылками всех типов, включая и жесткие, умеет работать файловый менеджер FAR (Alt/F6). С его помощью можно легко посмотреть количество ссылок, которые имеет файл:

Для этого нужно выбрать 9-й режим отображения любой из панелей. Крайний правый столбец покажет количество ссылок на файлы в текущем каталоге.

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

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

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

Сначала я сделал сжатие всех файлов папки WinSxS. Нам понадобится это в дальнейшем для прикидки объемов уникальных файлов и файлов, созданных жесткими ссылками.
Compact /C /A /I /S:C:\Windows\winsxs\
Результат для Windows 7 x64 получился такой:

— после сжатия – 6,85 ГБ.

Выигрыш места на диске составил 3,25 ГБ, или 32% от первоначального размера папки. Очень неплохо, учитывая, что все это делается для небольшого SSD-диска.

Теперь раскрутим файлы назад:
Compact /U /A /I /S:C:\Windows\winsxs
и попробуем сжать только уникальные файлы. Как же это сделать?

Идея такая – для каждого файла в папке WinSxS посчитать количество ссылок. Если ссылка всего одна – сжимаем, если больше – ничего не делаем. Для подсчета количества ссылок используем возможности команды fsutil hardlink list «Имя_файла». Естественно, ручками перебрать 60 тысяч файлов дело нереальное, поэтому создадим командный файл:
@echo off
REM Включаем раскрытие переменных окружения в момент обращения к ним
setlocal enabledelayedexpansion
REM Рекурсивно перебираем все файлы в каталоге C:\Windows\winsxs
for /R "C:\Windows\winsxs" %%i in (*) do (
REM Ищем однострочный вывод fsutil
fsutil hardlink list %%i | find /c /v "" | find /I "1" >nul
REM Если ссылка единичная, сжимаем файл
IF !ERRORLEVEL!==0 Compact /C /A /I %%i
@echo FINISH
pause>nul
Внимание! Пакетный файл необходимо запускать строго от имени администратора. В противном случае fsutil начнет выдавать однострочный текст ошибки, который будет благополучно обработан командами find. В результате окажутся сжатыми все файлы в каталоге WinSxS, а не только уникальные.

Скрипт, естественно, работает не так быстро, как «безразборное» сжатие всех файлов. В моем случае на i7 и SSD-диске перебор и сжатие файлов заняли около 20 минут.

Результат получился такой:

— исходный размер папки WinSxS составлял 10,1 ГБ,

— после сжатия только уникальных файлов – 8,25 ГБ.

Выигрыш места на диске составил 1,85 ГБ, или 18,3% от первоначального размера папки. Много меньше, чем после сжатия всех файлов, но тоже неплохо. Для моего 60-гигабайтного SSD-диска вполне различимо.

В заключение вернем разрешения на файлы:
icacls C:\Windows\winsxs\* /T /L /grant:r Администраторы:(RX)

Соотношение уникальных файлов и жестких ссылок в папке WinSxS Windows 7

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

Сделаем допущение, что средняя степень сжатия файлов одинакова для уникальных и неуникальных файлов.
K c = V c / V где V – исходный объем папки WinSxS, V c – ее объем после полного сжатия.
F 1 + F L = V
K C * F 1 + F L = V c1 F 1 – объем уникальных файлов, F L –объем ссылочных файлов, V c 1 – объем WinSxS после сжатия уникальных файлов.

Путем несложных преобразований получим:
F 1 = (V - V c 1) / (1 - K c)
После подстановки конкретных значений:
F 1 = (10,1 – 8,25) / (1 – 0,678) = 5,86 ГБ
Оказалось, что уникальные файлы занимают около 60% объема папки WinSxS. Неожиданный результат. А меня уверяли, что их там очень мало.

Заключение

В заключение необходимо отметить:

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

_____________________________

Появились:

33 комментария

    • Спасибо, что оценили. На самом деле есть еще одна идейка как можно без лишних проблем уменьшить WinSxS. Я как раз сейчас пишу об этом статью.

  1. Интересный вопрос. В принципе, допускаю, конечно. Думаю даже, что через некоторое время кто-нибудь воспользуется моей идеей в своих корыстных целях. Шучу, конечно, но почему бы и нет?

    При запуске команды на поиск выдает ошибку:

    При копировании в Блокнот или сразу в редактор FARа, все это дело копируется с какими-то сдвигами, а Блокнот предлагает сохранить в кодировке Юникод.

    В какой кодировке правильно сохранять данный командный файл?
    И чем лучше его создавать?

    • Файл сделан в кодировке OEM 866 (ДОС). В FAR-е после загрузки файла в редактор нужно сменить кодировку, нажав на F8.
      Можно редактировать в Notepad++, соответственно, выбрав кодировку OEM 866.
      Файл должен открываться в редакторах без каких-либо сдвигов, изначально их нет.
      А зачем что-то куда-то копировать?

      ОК, буду пробовать.

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

      А зачем? Есть же уже готовый проверенный файл. Если Вы оформили подписку на обновления блога по E-Mail, то ссылка на его скачивание есть в уведомлении о подписке.

      Скачал готовый файл и нашел причину ошибки
      FIND: Неправильный формат паратметра

      А вот и причина:
      в Вашем посте вот так
      fsutil hardlink list %%i | find /c /v «» | find /I «1″ >nul

      а в рабочем варианте так
      fsutil hardlink list %%i | find /c /v «» | find /I «1»

      Если можно, отредактируйте ваше сообщение и все будет ОК.

      Также выражаю благодарность за быстрые ответы.

      Виктор, боюсь, что >nul тут ни при чем. Скорее всего у Вас возникла проблемка с парными кавычками при переносе текста в редактор. Должно быть так:
      fsutil hardlink list %%i | find /c /v "" | find /I "1" >nul

    • Евгений, в данном случае Вам не нужно самостоятельно создавать командный файл — просто скачайте готовый. Для этого нужно лишь подписаться на обновления блога по E-Mail.
      А вообще командные файлы — это обычные текстовые файлы с расширением, как правило, .bat или.com, в которых записаны соответствующие команды. Такой файл можно создать практически в любом текстовом редакторе: notepad (блокнот), notepad++, far и т.д.
      А вот уже применение команд для решения той, или иной задачи — это совершенно отдельная тема. Скорее даже, направление.

  2. прочитал статью…ринулся было попробовать у себя…
    посмотрел размер папки winsxs (стоит windows 7 32 бит) -4,8 гб -наверное,
    особой целесообразности сжимать нет в таком случае?

    • Полагаю, что точно не стоит. После того, как в Windows 7 добавили возможность ntfs-сжатие стоит рассматривать исключительно как дополнительную возможность уменьшения размера.

    Может быть сможете мне помочь разобраться. Стоит Win7HB 64 бит. Делал все как сказано в статье (делал все от имени администратора): сменил владельца, добавляю права доступа. Однако в консоли пишется, что обработано всего 44 файла и это из 9Гб размера папки. В дальнейшем при выполнении скрипта на сжатие на все файлы выводится сообщение «Отказано в доступе». Результат выполнения Вашего скрипта winsxscompact.cmd дает тот же результат. Может быть сможете подсказать куда смотреть и что еще попробовать?

    • Да, это после чистки. Было где-то под 10Гб, под 700 Мб удалила очистка системы. Прошу прощения, что не сходятся расчеты, зря я их не записал. Попробовал полное сжатие: 62 файла сжал, примерно 6 Мб освободилось 🙂 Большая часть файлов прошла с той же ошибкой: отказано в доступе.

      По какой-то причине в вашей системе не удается изменить разрешения на файлы. Однако чудес на свете не бывает. В этой связи такой вопрос — у Вас Windows случайно не английский? У меня все используемые команды расписаны в расчете на русский. Командный файл, соответственно, тоже.
      А вообще, WinSxS 9 Гб для 64-разрядной Windows — это вовсе не запредельный размер. Боюсь, что после очистки штатным способом, поджать за счет ntfs-сжатия получится несильно. Если есть большие проблемы с местом на диске, то имеет смысл посмотреть другие варианты. Например, некоторые файлы и папки на другой диск (если не ноутбук, конечно).

    Александр, спасибо за файлик, скрип отличный. Тестировал на Win7 x64, полет нормальный. Но есть вопрос. Как этот скрипт поведет себя на серверных ОС? В частности интересует Windows Server 2008 R2 Enterprise SP1. И очень хотелось бы, чтобы появился скрипт для англоязычных ОС.

    • Сергей, спасибо за отзыв. Что касается Windows Server 2008 R2 SP1, то ситуация следующая. Скрипт в своем нынешнем виде работать на нем не будет, но так как Server 2008 это фактически Windows 7, то дело легко поправимое.
      Интереснее как раз ситуация с самим сервером. По-умолчанию в Windows Server 2008 не установлена утилита «Очистка диска» (Disk Cleanup). Для того, чтобы она появилась, нужно доустановить компоненту «Возможности рабочего стола» (Desktop Experience). Однако для того, чтобы не делать из рабочего сервера десктоп, можно просто скопировать cleanmgr.exe в %systemroot%\System32 и cleanmgr.exe.mui в %systemroot%\System32\ru-RU (или en-US) из WinSxS. Подробно расписать как это сделать я постараюсь в ближайшее время (добавлю в текст статьи).

      В скрипт добавлена поддержка Windows Server 2008. Локализация опять же русская. Соответственно, сделать штатную очистку можно только в 2008 R2 SP1, для остальных — ntfs-сжатие. Во время тестирования свежеустановленного и полностью обновленного экземпляра сервера WS 2008 R2 SP1 в виртуальной машине за счет ntfs-сжатия получилось освободить на диске ~1,5 Гб. Предварительно была сделана штатная очистка обновлений.

    Пимер применения:
    subinacl.exe /keyreg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DPS /grant=S-1-5-32-544=f >>%LogPacked%

    takeown.exe /F %SystemRoot%\system32\systeminfo.exe /A >>%LogPacked% 2>&1
    icacls %SystemRoot%\system32\systeminfo.exe /reset >>%LogPacked% 2>&1
    icacls %SystemRoot%\system32\systeminfo.exe /grant *S-1-5-32-544:F /inheritance:r /q /c >>%LogPacked%

    Спасибо, скрипт отличный. На 7-ке делает работу отлично.
    А вот на 10-ке не запускается. Может автор сможет добавить в столь полезный скрипт и поддержку win10? Спасибо!

    SC ControlService: ошибка: 1062
    Служба не запущена.

    Такие записи возникают после запуска файла.
    Не подскажите о какой службе речь, и как это поправить?

Здравствуйте уважаемые читатели блога www.сайт. Свершилось! Наконец то и я стал очередным счастливым обладателем твердотельного жесткого диска SSD. Диск этот мне подарили на 23 февраля.

Присматривался я к SSD давно, но все никак не решался купить — не дешевые они пока. Навскидку, сегодня стоимость 1 Gb хранения на обычном жестком диске колеблется от 2 до 6 руб/Gb, а на твердотельном накопителе SSD от 40 до 58 руб/Gb (чем больше емкость накопителя, тем меньше стоимость единицы хранения). Соответственно, разница в стоимости получается на порядок.

Все правильно, они и должны сильно отличаться по цене, потому что скорость доступа у SSD много больше чем у HDD.

Не могу сказать, что у меня до сих пор не было устройств с SSD-дисками. Уже несколько лет я с удовольствием использую нетбук Asus Eee-PC 900. Он сопровождает меня в поездках и побывал уже во многих странах. В нем установлено целых два SSD-диска размером 4 и 8 ГБ. Тот, что поменьше, как бы быстрый, тот, что побольше, считается медленным. Но, как вы понимаете, это обычные флешки, распаянные на плату, и быстрым даже тот диск, который таковым считается, точно не назовешь.

А вообще, обратите внимание на тот факт, что запоминающие устройства на основе кристаллов памяти уже «убили» массу таких привычных в недавнем прошлом устройств. Из нашей теперешней жизни практически полностью ушли: дискеты, пленочные фотоаппараты, кассетные магнитофоны, кассетные DV-видеокамеры. И все благодаря flash-памяти. Тенденция очевидна, хотя пока SSD-диски сильно обгоняя традиционные механические HDD-диски по скорости и цене, заметно отстают от последних по емкости и ресурсу.

Подарок поистине замечательный. Смущает слегка вот только его емкость – 60 ГБ. Windows 7 живет на моем десктопе не первый год и уже перенесла несколько переездов. Посему разрослась она прилично.

Памятуя, что систему я устанавливал на раздел размером 40 ГБ, потом пару раз увеличивал его по 10 ГБ за счет следующего раздела и наконец, когда в очередной раз место закончилось, мне это надоело и я отдал ненасытной Windows весь диск. Зря, кстати, – после этого осложнилась процедура бекапа. То есть, даже не глядя на размер, который теперь занимает система, можно с уверенностью сказать, что на новый SSD-диск она не поместится.

«Нет такой крепости, которую не могли бы взять большевики», — любила говорить одна моя замечательная знакомая. А еще у нее было выражение: “Варфоломеевский утренник”. Ну что же, будем руководствоваться этим девизом и попробуем одолеть «крепость» в виде SSD-диска небольшого размера плюс «растолстевшая» от времени операционная система Windows 7 x64 и не устроить при этом «Варфоломеевский утренник» компьютеру (Забегая вперед скажу, что пишу я этот текст уже на обновленном компьютере и радуюсь жизни, а это значит, что все получилось).

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

Все дальнейшие действия можно разделить на четыре этапа:

  1. Анализ и принятие решения;
  2. Подготовка к переносу системы на новый SSD-диск;
  3. Перенос системы на SSD-диск;
  4. Оптимизация системы после переноса, в том числе уменьшение занятого операционной системой места на SSD-диске.

Место, занимаемое на диске операционной системой Windows 7

Посмотрим сколько места занимают системные папки и файлы Windows 7 и прикинем, что тут можно предпринять.

Однако… С другой стороны ничего другого и не ожидалось. Простой расчет подтверждает опасение, что просто перенести Windows 7 на моем настольном компьютере на новый SSD-диск объемом 60 ГБ не получится.

Памятуя о том, что сразу после установки Windows 7 x64 занимает на диске около 15 ГБ (без программ, файла подкачки и файла хибернейт), первый порыв, который возникает, это выполнить инсталляцию системы с нуля.

Файл Hiberfil.sys отбросим сразу – на настольном компьютере c SSD-диском спящий режим (хибернейт) точно будет излишеством.

Считаем: Systemfolders (15) + Pagefile.sys (6,3) + Users (32,3) = 53,6 ГБ. Опять ничего не получается – после форматирования на SSD будет доступно меньше 56 ГБ. Стало быть, единственный реальный вариант в этом случае, это перенести какие-то папки и файлы на второй диск. Наша задача занять на SSD не больше 40 ГБ. Вот этим мы сейчас и займемся.

Сделать свежую инсталляцию Windows 7 конечно же точно бы не помешало. Благодаря этому, по крайней мере в первый момент, можно было бы прилично уменьшить занятое системой место. Но, во-первых, постепенно она опять разрастется, во-вторых, система в ее теперешнем состоянии меня полностью устраивает, в-третьих, просто жуткая лень опять все переставлять – искать дистрибутивы, ключи, активации. Нет, как-нибудь в другой раз. Или уже когда буду устанавливать Windows 8.

Решение будет такое – переносим на второй диск HDD профили пользователей. В принципе можно перенести не профили целиком, а только пользовательские папки, такие как: «Рабочий стол», «Мои документы», «Загрузки» и другие. Но я точно знаю, что, например, в AppData моего профиля лежит разностный диск виртуальной машины Windows XP Mode размером около 6 ГБ. Так что откажемся от этой заманчивой, в силу ее простоты, идеи и попробуем перенести профили целиком.

Предположим, что файл подкачки Pagefile.sys тоже будет на втором диске и снова посчитаем.

Вывод — в целом решение правильное, но до переноса надо еще хорошо потрудиться.

Подготовка к переносу системы Windows 7 на SSD-диск

Делаем бекап системных разделов

Этот пункт обязателен! Без него не начинаем никаких действий. В статье я буду рассказывать, как делать правильно. Но это не значит, что я все делал правильно сс самого начала. Если бы на определенном этапе у меня не оказалось под рукой свежего бекапа системы с пользовательскими профилями, то наступил бы как раз «Варфоломеевский утренник». У вас могут возникнуть какие-то другие заморочки и возможно придется начинать все заново.

Обычно я делаю резервные копии дисковых разделов Windows с помощью Acronis True Image Home с загрузочной USB-flash. Если с Acronis что-то не складывается, то с успехом можно воспользоваться Live CD с бесплатной от тайваньской лаборатории NCHC (National Center for High-Performance Computing). Она регулярно обновляется и ее лучше всего скачать с официального сайта . Clonezilla live можно использовать для создания резервных копий как Linux, так и Windows систем.

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

Отключаем поддержку формата имен файлов 8.3 в NTFS

Этот шаг никакого отношения к размеру занимаемому операционной системой на диске не имеет. Но коль уж конечной целью является кардинальное увеличение скорости дисковых операций, то начал я с него. Совершенно не уверен, что это принесет сколь-нибудь заметный результат, но формат имен файлов 8.3 мне все равно не нужен, так пусть его и не будет. Я воспользовался командой fsutil.

Запускаем «Командная строка» с правами администратора (клик правой кнопкой мыши –> «Запуск от имени администратора»). В появившемся окне вводим команду:

На самом деле эта команда просто меняет значение одного параметра в реестре, а именно:

HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation < DefaultValue >

где DefaultValue может принимать следующие значения:

0: Включить создание имен в формате 8.3 для всех разделов в системе;

2: Включить создание имен в формате 8.3 для заданных томов;

Так что добиться результата можно и непосредственно редактируя реестр в regedit. Кому как больше нравится.

Убираем ненужные программы

Идем в «Панель управления» –> «Программы и компоненты» и смотрим, нет ли там программ, которые можно уже смело удалить. Оказывается, что очень даже и есть. Не поверите, но на названия некоторых программ я смотрел подолгу и не мог вспомнить, что это такое. Удаляем смело – если потом понадобится, можно будет и установить, причем свежую версию.

Отключаем восстановление системы

Открываем «Панель управления» –> «Система» –> «Защита системы». Открываем вкладку «Защита системы».

Находим и отмечаем диск C: и нажимаем «Настроить».

Бекап системы у нас к этому моменту уже есть. Смело выбираем «Отключить защиту системы» и нажимаем «Удалить». Готово. Все закрываем.

Очистка диска встроенными средствами Windows

Идем: «Пуск» –> «Все программы» –> «Стандартные» –> «Служебные» –> «Очистка диска»

Нажимаем «ОК»

Для начала нажмем «Очистить системные файлы». Окно исчезнет, вместо него временно появится другое с индикатором прогресса операции, затем снова появится. Ставим/убираем галочки выбора категорий удаляемых файлов, нажимаем «ОК» и подтверждаем запрос на удаление файлов.

Удаление временных файлов

На всякий случай заглянем в папки временных файлов. Если ранее не меняли переменные среды, то это будут: C:\Windows\Temp и %USERPROFILE%\AppData\Local\Temp (для того, чтобы увидеть содержимое папки временных файлов пользователя из Explorer, нужно включить видимость системных и скрытых файлов и папок в “Параметры папок”). Можно смело выделять все файлы и удалять их – временные они и есть временные. Те файлы, которые используются непосредственно в этот момент, система удалить не даст и мы, естественно, с ней согласимся.

Дополнительная очистка диска

Штатные средства, как мне кажется, мы использовали все. Если этого все еще недостаточно, то дополнительно можно воспользоваться сторонними утилитами. Например, хорошо известной программой CCleaner . У нее есть бесплатный вариант, которого для решения поставленной задачи вполне достаточно. Не буду сейчас останавливаться на описании этой программы, в принципе в ней все более-менее понятно.

Пожалуй, теперь точно все. Смотрим, что получилось в результате наших стараний.

Убрать получилось не так уж и много – всего 5,64 ГБ. Это составляет около 12% от первоначального размера, но впоследствии, уже после переноса, мы на этом не остановимся и даже доберемся до печально известной папки .

Я так досконально привожу все эти размеры системных папок для того, чтобы другие могли прикинуть для себя, за что стоит бороться, за что нет. Хотя конкретные цифры у каждого, естественно, будут совершенно иными.

Об этом увлекательнейшем процессе я расскажу во .

В этой статье мы поговорим о каталоге WinSxS в Windows 10 и Windows 8.1, причинах его постоянного роста и способах очистки. Каталог C :\windows \WinSxS является хранилищем компонентов Windows. В этом каталоге хранятся dll библиотеки, бинарные и xml файлы, необходимые для установки и работы той или иной роли ОС Windows. При установке обновлений Windows (это происходит ежемесячно), новая версия обновляемого компонента устанавливается в систему, а старая сохраняется в хранилище WinSxS (это необходимо для обеспечения совместимости и возможности «отката» на старые версии компонентов при ).


Как не трудно догадаться, каталог WinSxS со временем будет постоянно увеличиваться, причем размер его не ограничен ничем (хотя на практике размер папки WinSxS в Windows 10/8.1 редко превышает 15-20 Гб.)

Самым естественный способ уменьшить размер папки WinSxS в Windows 10 и Windows 8 — удалить из системы старые версий компонентов, оставшиеся после обновления системы. Для этого используется стандартный мастер очистки диска cleanmgr или специальные опции команды DISM (см. ниже).

Как узнать реальный размер папки WinSxX в Windows 10 / 8.1

Еще одной особенностью папки WinSxS является наличие в ней большого количества так называемых hard links (жестких символьных ссылок) . Жесткая ссылка представляет собой полностью равноправный оригинальному указатель на файл. Т.е. указатель и исходный файл могут иметь разные имена и находиться в пределах одного раздела в разных каталогах, но реально указывать они будут на один и тот же объект. Именно из-за наличия жестких ссылок, которые включаются в расчет общего размера каталога, файловые менеджеры (и в том числе Windows Explorer) показывают несколько преувеличенный размер папки WinSxS. Узнать реальный (без учета жестких ссылок) размер папки WinSxS можно с помощью утилиты SysInternal du :

Du -v c:\windows\winSXS

Так же вы можете проанализировать размер хранилища компонентов (папку WinSxS) с помощью команды DISM:

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Разберемся, что возвращает данная команда:

Размер хранилища компонентов по данным проводника: 5.70 GB (это размер хранилища без учета жестких ссылок)
Фактический размер хранилища компонентов: 5.49 GB (реальный размер хранилища компонентов с учетом жестких ссылок)
Совместно с Windows: 3.12 GB (обязательные файлы системы, не могут быть удалены)
Резервные копии и отключенные компоненты: 2.12 GB (устаревшие файлы компонентов, которые нужны на случай проблем установленными обновлениями)
Кэш и временные данные: 245.87 MB (файлы используются для ускорения работы системы обслуживания)
Дата последней очистки: 2018-07-31 12:45:23
Число освобождаемых пакетов: 10 (файлы, которые обновились после установки обновлений Windows, они будут удалены при очистке хранилища)
Рекомендуется очистка хранилища компонентов: Да

Как вы видите, в данном случае можно уменьшить размер каталога WinSxS на 2.1 Гб + 250 Мб.

У многих пользователей возникает естественный вопрос можно ли вручную удалить файлы из папки WinSxS. Ответ на этот вопрос – категоричное НЕТ! Такими действиями с большой долей вероятности получиться нарушить работоспособность Windows. И хотя некоторые попытки удаления файлов из папки WinSxS могут быть удачными, рекомендовать этот способ с точки зрения потенциальной опасности для системы нельзя.

Остановимся на наиболее безвредных с точки зрения системы способах очистки папки WinSxS в Windows 10 и Windows 8.1. Это:

  • Удаление старых версий компонентов , оставшихся после установки обновлений;
  • Технология Features on Demand (функции по требованию), позволяющая удалить неиспользуемые компоненты Windows с диска;
  • Сжатие файлов в папке WinSxS – способ уменьшить размер каталога WinSxS за счет NTFS компрессии ее содержимого.

Для достижения максимального результата все три способа можно использовать совместно.

Очистка хранилища компонентов (папки WinSxS) в Windows 10 / 8.1

На мой взгляд самый быстрый и простой способ очистить место в хранилище компонентов (т.е. очистить папку WinSxS), удалив старые версии компонентов – выполнить команду:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup


У параметра /StartComponentCleanup есть дополнительная опция /ResetBase , позволяющая удалить все предыдущие версии компонентов (после этого вы не сможете удалить установленные обновления или Service Pack, а в панели обновлений appwiz.cpl у обновления пропадет кнопка «Удалить»). Полностью команда выглядит так:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Также вы можете удалить устаревшими обновления из мастера «очистки диска». Выполните команду cleanmgr c правами администратора.

В окне утилиты выберите диск и в следующем окне нажмите кнопку «Очистить системны файлы».

Далее выберите опцию “Файлы журнала обновления Windows» и нажмите Ок для начала очистки. Утилита очистки диска покажет сколько места вы можете освободить, удалив файлы журнала старых обновлений Windows. В моем примере это 427 Мб.

После окончания очистки хранилища с помощью DISM проверьте сколько освободилось места на диске.

Кроме того, в планировщике Windows 10 есть специальное задание автоматического обслуживания, которое выполняет ту же самую операцию, что и dism с ключом StartComponentCleanup, удаляя все устаревшие обновления старше 30 дней. Это задание с именем StartComponentCleanup находится в разделе \Microsoft\Windows\Servicing.

Функции по требованию в Windows 10 и 8.1

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

Примечание . В сети гуляет еще один скрипт, позволяющий уменьшить размер папки WinSxS - WinSxSLite (от Christian Bering Boegh). Данный скрипт согласно информации разработчика ищет на диске самые последние файлы библиотек и создает ссылки на них со всех предыдущих версий и удаляет неактуальные версии. Считаем необходимым отговорить наших читателей от использования скрипта WinSxSLite, т.к. несмотря на довольно толковую идею, результат его выполнения является непредсказуемым, и, несмотря, на уменьшение размера каталога WinSxS, часть функционала Windows перестает работать.

Похожие статьи