Уменьшение размера папки windows 7. Что такое папка WinSxS? Как уменьшить размер папки WinSxS? Дискуссия и опрос

Как уменьшить размер папки WinSxS в Windows 7 и 8?

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


На самом деле папка занимает меньше места, чем кажется, но если вы дорожите каждым ГБ свободного места, можете регулярно удалять её содержимое.

Почему папка WinSxS растет?

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


Файлы из папки Windows попадают в WinSxS с помощью жестких ссылок, и файловые менеджеры принимают их за реальный объем. Поэтому размеры папки могут отображаться неверно, а на самом деле она, как правило, весит не больше 15ГБ.


Однако если вы хотите почистить свою систему от ненужных файлов, есть несколько способов сделать это.

Очистка обновлений Windows

В командной строке нужно набрать cleanmgr, и встроенная утилита покажет, сколько места вы можете освободить. Надо просто отметить «Очистка обновлений Windows» и нажать ОК.



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


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


В отличие от семерки, Windows 8 и 8.1 очищают обновления автоматически в Планировщике. Windows очищает папку по расписанию с помощью задания Microsoft – Windows – Servicing – StartComponentCleanup, которое автоматически запускается в фоновом режиме и удаляет компоненты через 30 дней после того, как вы установили обновления.



Если вы хотите удалять обновления вручную, откройте «Очистку диска», отметьте «Очистку обновлений Windows» и нажмите ОК.


В ОС Windows 8.1 реализовано еще больше возможностей для самостоятельного удаления файлов. Там можно удалить все предыдущие версии, даже когда с момента установки новых еще не прошло 30 дней. Для этого надо запустить командную строку от имени администратора и ввести нужные команды.


Например, одна команда удаляет все версии обновлений без 30 дней ожидания:


DISM.exe /online /Cleanup-Image /StartComponentCleanup


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


DISM.exe /online /Cleanup-Image /SPSuperseded


Еще одна команда удалит все старые версии каждого компонента. После этого вы не сможете удалить все установленные пакеты обновлений:


DISM.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

Удаление компонентов по требованию

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


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



Однако, даже неиспользуемые компоненты занимают место на жестком диске, и если вам очень важно свободное место, можете их удалить.


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


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


DISM.exe /Online /English /Get-Features /Format:Table


Вы увидите разные компоненты и их состояние.



Чтобы удалить функцию из системы, можно использовать следующую комнду, заменив NAME на название функции, которую вы хотите удалить.


DISM.exe /Online /Disable-Feature /featurename:NAME /Remove



Если вы выполните команду / GetFeatures еще раз, вы увидите, что функция сменила статус на: «Disabled with Payload Removed» («Отключено с удалением полезных файлов») вместо просто «Disabled» («Отключено»).


Здравствуйте уважаемые читатели блога 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% от первоначального размера, но впоследствии, уже после переноса, мы на этом не остановимся и даже доберемся до печально известной папки .

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

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

Уменьшение размеров папок в любой версии операционной системы Microsoft Windows всегда было одной из наиболее востребованных задач, поскольку, как известно, места на жестком диске много не бывает.

Инструкция

  • Вызовите контекстное меню подлежащей уменьшению размера папки кликом правой кнопки мыши и укажите пункт «Свойства».
  • Перейдите на вкладку «Общие» открывшегося диалогового окна и выберите опцию «Другие».
  • Примените флажок на поле «Сжимать содержимое для экономии места на диске» и подтвердите применение выбранных изменений нажатием кнопки OK (для файловой системы NTFS).
  • Загрузите и установите на компьютер специализированное приложение-архиватор WinRar (для файловой системы FAT32).
  • Вызовите контекстное меню подлежащей уменьшению размера папки кликом правой кнопки мыши и укажите команду «Добавить в архив» (для файловой системы FAT32).
  • Уменьшите размеры системных папок операционной системы, при условии полной установки файлов Service Pack, методом удаления использованных установочных файлов специализированными встроенными утилитами:- DISM /online /Cleanup-Image /SPSuperseded - для Windows 7;- cleanmgr.exe (Disk Cleanup Wizard - для Windows 7;- compcln.exe - для Windows Vista;- VSP1CLN.exe - для Windows Vista.
  • Вызовите главное меню операционной системы Windows XP нажатием кнопки «Пуск» и перейдите в пункт «Все программы» для выполнения операции уменьшения размеров системной папки.
  • Раскройте ссылку «Стандартные» и запустите приложение «Проводник Windows».
  • Пройдите по путиимя_диска:WindowsDriver Cachei386 и удалите папку %SystemRoot%DriverCachei386 (для Windows XP).
  • Отключите функцию восстановления системы, уменьшив таким образом до нуля размер папки System Volume Information (для Windows XP).
  • Еще раз вернитесь в главное меню «Пуск» и перейдите в пункт «Выполнить» для осуществления процедуры уменьшения размера папки восстановления системных файлов.
  • Введите значение sfc: sfc /cachesize=10в поле «Открыть» и подтвердите выполнение команды нажатием кнопки OK. По умолчанию размер папки %SystemRoot%system32dllcache составляет 400 Мб, а данное действие уменьшит его до 10 Мб (для Windows XP).
  • Судя по количеству поисковых запросов, многие пользователи 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
      Служба не запущена.

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

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

    Почему же эта папка такая большая ?

    На самом деле реальный размер этой папки не превышает 15 Gb, так как большинство файлов из папки Windows проецируется в нее с помощью жестких ссылок. Поэтому файловые менеджеры могут показать размер этой папки более 15 Gb, так как воспринимают объём жестких ссылок.

    Какие будут последствия если просто удалить эту папку ?

    Многие в интернете пишут, что содержимое этой папки можно просто удалить, и что никаких серьёзных сбоев системы они не видели после удаления. Но это совсем не так, и ключевой момент здесь «не было замечено». Вам может показаться что все в норме, но на самом деле в системе уже возможно стали происходить сбои, хотя может их пока и не заметно. Бывали и случаи, что после удаления этой папки, пользователи просто не могли потом нормально загрузить систему. Поэтому не удаляйте содержимое это папки. Её можно отчистить только с помощью специальных утилит.

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

    Очистка WinSxS в Windows 7

    Недавно вышло обновление (KB2852386) , с помощью которого можно безопасно уменьшить размер папки WinSxS.
    1. Нужно скачать обновление KB2852386 .

    Для этого перейдите : Панель управления\Все элементы панели управления\Центр обновления Windows.

    Затем нажмите проверить обновления , после чего нажмите на ссылку необязательные обновления .

    Найдите в этом списке обновление KB2852386 , после чего отметьте его галочкой. После этого нажмите Ок , и установите обновления. Дождитесь конца установки.


    2. Теперь можно приступить к освобождению места на системном диске:

    Откройте мой компьютер , щелкните по системному разделу правой кнопкой мыши (как правило это диск С), и зайдите в свойства .

    Нажмите кнопку очистка диска , и найдите пункт «Очистка обновлений Windows» , и отметьте его галочкой.

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

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

    Когда процесс очистки диска будет завершен, перезагрузите компьютер.

    Удалится ли папка WinSxS после очистки ?

    Нет, но число подпапок и файлов в ней уменьшится, а следовательно и ее объем.

    Что конкретно удаляется ?

    Неиспользуемые файлы обновлений. Эти файлы не участвуют в работе системы, потому что вместо них уже используются файлы из более свежих обновлений.

    Похожие публикации