НЕ ПРОПУСТИТЬ ИНТЕРЕСНОЕ

Свежие обсуждения

Sorry. No data so far.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dism-cleanup

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

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

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

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

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

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

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

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

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

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

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

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

Смена владельца папки WinSxS

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

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

winsxs-right-change

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

Установка полного доступа на папку WinSxS для группы администраторов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Копирование файлов с сохранением прав доступа в файловом менеджере FAR

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

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

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

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

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

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

Назначение TrustedInstaller владельцем папки WinSxS

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

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

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

Установка доступа на чтение и выполнение на папку WinSxS для группы администраторов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии: 140. Присоединяйтесь к обсуждению!

  1. Vika:

    «После завершения операций переноса WinSxSBackup на другой диск имеет смысл вернуть прежние разрешения на папки и файлы:

    icacls C:Windowswinsxs /T /L /grant Администраторы:(RX)

    То же самое можно сделать и в Windows Explorer описанным выше путем.»

    Ни первым ни вторым путем вернуть прежние разрешения на папки и файлы не удалось.
    В списке “Безопасность” –> “Дополнительно” –> “Владелец” –> » изменить владельца на » –> !!!
    TrustedInstaller отсуствует

    • Александр AKS:

      Команда «icacls C:\Windows\winsxs /T /L /grant:r Администраторы:(RX)» устанавливает для группы «Администраторы» разрешения только на чтение и выполнение, но не возвращает прежнего владельца. В этом смысле замечание верное. Но что в этом страшного? Ну останутся владельцем этой папки «Администраторы» — ровным счетом никакого криминала. На работу и безопасность системы это никак не повлияет.

    • Александр AKS:

      Еще раз большое спасибо за ценное замечание. Я дополнил статью описанием того, как сделать сервис TrustedInstaller владельцем папки WinSxS.
      Соответственным образом был изменен скрипт winsxscompact.cmd. Теперь по окончании работы командного файла полностью возвращаются все первоначальные разрешения.
      Новую версию файла можно скачать по старой ссылке в уведомлении о подписке на обновления блога.

    • artemi:

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

  2. Vika:

    Я Вас благодарю за замечательную статью и замечательный скрипт!
    Все прекрасно работает!
    Было: 8,01 ГБ , на диске 8,09 ГБ
    Стало: 8,01 ГБ , на диске 6,97 ГБ
    больше ГБ с диска освободилось!

    • Я очень рад что у Вас все получилось и спасибо за отзыв. С это папкой действительно было сложно придумать что-то одновременно действенное и безопасное.

  3. Сергей:

    Запускал winsxscompact.cmd, несколько моментов:
    1) если ввести «y» вместо «Y» то программа ничего не делает. Простой пользователь может не разобраться, почему так.
    2) у меня Windows 7 х64, и прграмма выдала сообщение, что на х64 DSIM выполнить невозможно. Дальше отработала штатно. Впрочем, эту операцию с DSIM и очисткой установленных обновлений я делал уже раньше вручную.
    3) а можно в конце прикрутить паузу «до нажатия любой клавиши» и сообщение об успехе? А то окно командной строки после выполнения просто пропадает, — я было подумал, что вдруг я чего-нибудь не так сделал…
    4) сейчас в свойствах папки winsxs пишет «размер 9,01 ГБ, на диске 8,19 ГБ». К моему сожалению, я не проверил размер «на диске» до операции. Но в командной строке проскакивало много сообщений об успешном сжатии папок, поэтому я зашел в winsxs и посмотрел содержимое. Однако ничто не было помечено синим цветом (везде пишут, что «содержимое будет отображаться в проводнике синим цветом, что означает – к объекту применено NTFS сжатие»). Так произошло ли реально сжатие?
    5) будет ли работать NTFS-сжатие на SSD с прошивкой SandForce (там и так есть сжатие)? К слову, у меня SSD OCZ Vertex 4.

  4. Сергей:

    Кстати, нашёл похожую статью на Хабре, но там автор в процессе останавливает работу некоторых служб.

    • Начну с главного. Наверное не очень хорошо получилось, что тема разъехалась на два поста. Тем не менее, не пожалейте 5 минут времени и прочитайте первую статью. Она снимет сразу целый ряд вопросов.
      (4) Главная идея состоит в том, чтобы в папке WinSxS сжать только уникальные файлы и не трогать копии (Hard Links) файлов из других системных каталогов. Если подходить к статье, опубликованной на habrahabr, с этих позиций, то она, как бы, неправильная. С таким же успехом тогда можно сжать просто весь диск с:\.
      Если Вы внимательнее посмотрите на содержимое WinSxS после работы скрипта, то обязательно найдете в ней сжатые (помечены синим цветом) файлы. Просто их будет примерно половина. Это и есть уникальные для этой папки файлы.
      (5) Очень правильный вопрос. Работать будет. У меня у самого SSD с прошивкой SandForce. С него, собственно, все и началось. У меня лежит очень интересный материал по скорости чтения NTFS-сжатых файлов для различных типов HDD. В плане публикаций стоит одним из первых, но все никак не доходят руки сесть и оформить. Сделаю обязательно. Если Вы подписаны на обновления блога, то не пропустите.
      (1,2,3) — пауза в конце стоит. Может быть случайно нажали на «Enter». DISM скорее всего запустилась и отработала нормально, но просто не нашла файлов пакетов обновлений. Значит их или не было, или Вы их уже удалили раньше. Отлов на маленький «y» добавлю, спасибо за замечание.

    • Сергей:

      2) Да, я уже убирал файлы установки раньше. Но вот какая надпись появляется:
      «Система DISM
      Версия: 6.1.7600.16385
      Ошибка: 11
      Нельзя обслуживать 64-разрядную операционную систему 32-разрядной версией системы DISM. Следует использовать версию DISM, соответствующую архитектуре компьютера.»
      3) я два раза запускал winsxscompact.cmd, и оба раза она не останавливалась на паузу в конце.
      4) Странное дело, Александр. Да, я перерыл папку winsxs и действительно нашёл реально NTFS-сжатые файлы, но помечать их синим цветом проводник стал только сегодня, т.е., получается, после перезагрузки Windows. Либо должно было пройти какое-то время?.. Странно…
      5) Так что же получится, двойное сжатие?…….

    • «Как много нам открытий чудных…».
      (2) В х64 действительно два файла Dism.exe — один в %Windir%\System32\, другой в %Windir%\SysWOW64\. По умолчанию Dism запускается из \System32\. И на моей рабочей Windows 7 x64 и на x64 виртуальных машинах с Windows 7 / 8 именно он отрабатывает без ошибки 11. Парадокс, но к этой ошибке приводит запуск Dism из \SysWOW64\. Сергей, попробуйте на своей машине последовательно выполнить в командной строке с правами администратора сначала
      %Windir%\System32\Dism /online /Cleanup-Image /spsuperseded /hidesp
      потом
      %Windir%\SysWOW64\Dism /online /Cleanup-Image /spsuperseded /hidesp
      Выберите тот Dism, который будет правильным для вашей системы и поправьте путь к нему в winsxscompact.cmd.
      (5) Нет, не получится. Просто из-за жестких символьных ссылок сожмутся еще файлы из других системных каталогов: Windows, Program Files и т.д.

    • Сергей:

      2) Действительно, %Windir%\SysWOW64\Dism… даёт ошибку 11, а %Windir%\System32\Dism… не даёт. Ещё странней, что в winsxscompact.cmd записано «dism /online /Cleanup-Image /spsuperseded /hidesp» без указания SysWOW64 или System32, и даёт ошибку, в то время как запуск вручную в командной строке несколько дней назад фразы «dism /online /Cleanup-Image /spsuperseded» (также без указания SysWOW64 или System32) сработал без ошибок и вычистил у меня ненужные файлы.

  5. Alex:

    Огромное спасибо!
    одна только dism /online /Cleanup-Image /spsuperseded /hidesp
    помогла освободить 6,5 гигов на диске

    • Спасибо за отзыв. Здорово и поздравляю! Больше 6 гиг — это действительно заметный результат.

  6. павел:

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

  7. павел:

    да.
    перед этим запускал команду DISM _все ок. ничего не нашла )))

    размер папки C:\Windows\WinSxS\Backup у меня 395 мБ.
    размер папки Winxsx — 6,47 Гб (на диске).
    система-win 7 /32 бит.максимальная. все обновления.
    система установлена в октябре прошлого года-никаких проблем не испытываю.
    в принципе,приложений установлено так…средне по количеству

    • ОК. Я думаю, что с таким размером папки WinSxS ее сжатие делать не надо — столько она, примерно, занимать и должна.

  8. Александр:

    Спасибо за скрипт. Вроде отработал успешно. Один только вопрос: после нажатия в cmd клавиши Enter, cmd закрывается. Это так и должно быть?

    • Так все же отработал или нет? Откуда такая неуверенность. Скрипт работает примерно минут 30 (зависит от скорости диска и процессора). Не заметить это невозможно — стадии процесса видны в окне командной строки. Если запустился и тут же исчез, значит, скорее всего, Вы запустили скрипт не от имени администратора.

  9. Денис:

    Добрый день!
    Пишу узнать информацию по одному вопросу. А именно про скрипт выполняющий сжатие папки winsxs на который получаю ссылку при подписке на рассылку.
    У меня установлена операционка Win 7 x64 ?при запуске скрипта от администратора получаю ошибку 11 ,хотя в статье написано,что скрипт может работать под х64 .
    Как тогда заставить скрипт отработать нормально?

  10. Денис! Этот вопрос уже был в обсуждении выше (24.07.2013). Дело в том, что на некоторых х64 (не на всех) по умолчанию запускается 32-разрядный Dism. Попробуйте добавить в скрипте путь таким образом:
    %Windir%\System32\Dism /online /Cleanup-Image /spsuperseded /hidesp
    Можно сначала попробовать в командной строке с правами администратора выполнить эту команду.

  11. Александр:

    Да, Вы правы. Запускал без прав Администратора. Весь процесс занял 40 мин. Было: 11,6 Gb
    Стало: 8,02 Gb
    Результат налицо. Еще раз спасибо. Успехов.

  12. Dmitry:

    Запустил скрипт, который скачал после подписки. Ужало в 0%… те вообще ничего не произошло. Винда 7-ка х64. Посмотрел скрипт, вроде все должно работать, но не работает, хотя отробатывал 1 час. Может быть это из за того что Винда английская?

    • Нет, работать не должно. В статье честно написано, что «Командный файл “winsxscompact.cmd” написан для русских версий Windows 7 / 8 /8.1».
      Для англоязычных нужно в двух строках найти «Администраторы» и поменять на «Adminisrtators». После этого скрипт должен отработать корректно, но я его в английской версии не тестировал.
      Попробую на следующей неделе выкроить время и сделать универсальный вариант.

    • Dmitry:

      Еще раз спасибо , ответил не в сетку, после замены имени на англицкую, заработал, когда закончит отпишусь на скока сжел и будут ли траблы потом после перезагрузки

  13. Dmitry:

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

  14. Dmitry:

    В общем скажу так: результат данного скрипта меня совершенно не устроил, но это не означает что скрипт плохой, скрипт отлично работает, и мало того считаю что по ходу действительно это самое грамотно-безопасное решение которое я вообще нашел в интернете за полтора дня. Не устраивает безрукость и наплевательское отношение Микросововцев. Это ж блин че получается я купил себе винт оставил под систему 100гиг, допустим работаю на такой работе что постоянно что то ставлю что то стираю, и че мне после пару месяцев новый винт покупать? Все плюются, кстати во всем мире, на эти гребаные три папки WinSxS, Installer, и System32/DriverStory….. а макрососовцы пишут…. типа не ребята вы не так все поняли все ж для вас ….все гуд это вы не понимаете а не мы бараны…..сорри наболело просто …. а за скрипт спасибо …. WinSxS с 12 гиг до 7,5 ужала, но это все равнож не панацея, нафига мне винда которая 30 гиг весит

  15. павел:

    ребята, не знаю,что вы там с системами своими мутите…
    у меня системе через 2 месяца будет год,как установлена.
    качаю повально все обновления, достаточное число программ установлено, игры…
    размер папки WINDOWS -13,5 гб.
    размер папки C:\Windows\WinSxS\Backup у меня 395 мБ.
    размер папки Winxsx — 6,47 Гб (на диске).

    примерно все держу под контролем-ничего самопроизвольно в размерах не увеличивается…

    • Dmitry:

      Привет. Подскажи как пользуеш винду, если это правда, на самом деле у меня например есть непонятки как ею пользоваться, если напишеш хотябы …. ну допустим типа 10 заповедей, о том как пользоваться видой, что делать и что не делат, я думаю тебе не я один благодарен буду, ПС…у меня винде 2 года (на этом компе…с которого я пишу) винда 60 гиг WinSxS папка 43 гига…ну наверное я что то не правильно делаю (сорри модератору за флуд)

  16. Татьяна:

    Добрый день! Возможно ли из за переноса папок MSOCache,Search,WinSxS, Backup не устанавились последние обновления KB2849470, KB2859547, KB2862966, KB2868623 ? На ноутбуке все обновления встали без проблем.

    • Татьяна:

      Нет, саму я папку не переносила, а только ужала .Просто папку на другом диске назвала WinSxS , в ней лежит папка .

    • Татьяна:

      Backup

    • Вы меня прям напугали с переносом WinSxS. Проверьте на всякий случай символьные ссылки на перенесенные папки , то есть, открываются ли они по ним. Проблем быть не должно, по крайней мере, теоретически. Давайте методом исключений. MSOCache относится только к MS Office, Search — точно ни при чем, ntfs-сжатие WinSxS никак повлиять не могло. Единственное, на что можно грешить, это Backup. Проверьте на нее разрешения, главным образом есть ли в ней TrustedInstaller

    • Татьяна:

      Ссылки есть на MSOCache, Installer . TrustedInstaller есть . Вот что интересно ссылка на Installer есть , но когда окрываешь эту папку , в ней файлы показывают путь не к тому диску , куда она перенесена, а диск С. И не установились только эти 4 оновления.

    • По поводу файлов не понял. Кто куда показывает?
      В C:\Windows должен быть линк (ссылка) Installer. Если ее открыть, то должно появиться содержимое C:\Windows\Installer. Если так, то все правильно. В этой папке должно быть много номерных файлов и папок. Посмотрите даты их создания. Если есть совсем свежие, значит все в порядке и причина отказа в установке обновлений в чем то другом.

  17. Татьяна:

    Код ошибки 80070011 обновления означает «ERROR_NOT_SAME_DEVICE — система не может переместить файл на другой диск». Вот и не понятно ,что же такое я перенесла не то ?Все делала по вашей статье: Назначение и свойства папки WinSxS в Windows, способы очистки и сжатия, перенос подпапки Backup.

    • На момент переноса папки backup в системе точно никакие обновления не висели? Файлы все скопировались без ошибок?

    • Татьяна:

      Ошибок никаких при переносе не было , а вот насчет обновлений , не помню. Может быть вернуть папку на место ?

    • Это первое, что приходит в голову. Больше не знаю на что грешить. Если все встанет на место, сделаете после очередного обновления еще раз сжатие WinSxS скриптом, Backup тоже сожмется.
      Будете делать перенос, отключите обновления и проверьте в диспетчере задач сервисы (службы) msiserver и TrustedInstaller — они д.б. остановлены.

    • Татьяна:

      Такая команда будет правильной : xcopy D:\SystemFoldersC\WinSxS\Backup C:\Windows\WinSxS\Backup\ /E /H /O /X и нужно ли удалить ссылку ?

  18. Татьяна:

    После переноса нужно ли заново включать эти службы?

    • Татьяна:

      Перенести не удается : Попытка доступа к ресурсу, занятому другим приложением.

    • Стало быть с содержимым папки по ссылке работа идет. Попробую смоделировать вашу ситуацию на виртуальной машине. Не сегодня уже, конечно. Катастрофического ничего нет. У Вас какая Windows 7, 32 или 64?

    • Татьяна:

      Windows 7 64.

  19. Татьяна:

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

  20. Татьяна:

    Не копируется , пишет нет доступа .

    • Татьяна:

      Доступ сделала , файлы перекопировала . Теперь ,что нужно сделать ?

    • Теперь можно запустить winsxscompact.cmd. Он сожмет нужные файлы и в конце выставит исходные разрешения. Ну и пока все.

  21. Татьяна:

    Спасибо за помощь.

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

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

  22. Vika:

    К сожалению факт отказа в установке некоторых обновлений после переноса папки Backup полностью подтвердился.

    Странно, но после процедуры сжатия перестали приходить обновления, кроме Definition Update for Windows Defender.
    Центр Обновления Windows сообщает каждый день:
    Отсутствуют какие-либо обновления для данного компьютера.

    • Так речь о backup или о сжатии WinSxS?
      С переносом backup мы временно распрощались из-за возникших неприятностей с установкой обновлений.
      Что касается ntfs-сжатия WinSxS, то оно ни теоретически, ни практически вызвать какие-либо нарушения в работе системы не может.
      Теоретически, потому что compact является встроенной функцией Windows. При желании Вы можете сжать хоть весь диск (кроме загрузчика) и ничего плохого не произойдет.
      Практически — в поле моего зрения постоянно находятся несколько компьютеров, на которых сжата WinSxS. Они работают так уже достаточно долго и ровным счетом никаких проблем не наблюдается, в том числе с обновлениями.
      Проверьте разрешения на папку WinSxS. Eсли есть сомнения, то скачайте по прежней ссылке скрипт winsxscompact.cmd и запустите его еще раз. В конце работы он выставит все нужные разрешения.
      У Вас, если мне память не изменяет, были очень большие проблемы с местом на диске. Возможно проблема выросла отсюда. Посмотрите логи на предмет ошибок: «Управление компьютером» -> «Просмотр событий» -> «Журналы Windows».

  23. Виталий:

    Привет, ваш скрипт winsxscompact не помог. У меня было на диске 11+ гб,а стало 9.15… Скрипт запустился, отработал нормально, далее я вышел ну и -2гб на диске(((( Либо я не дочитал и нужно что-либо после работы скрипта еще делать вручную ( дефрагментацию и очистку от ненужных файлов+корзину очистить — это я сделал), либо Ваш скрипт дал сбой я хз кароч.

    • А что значит не помог? В результате работы скрипта на вашем диске освободилось 2 ГБ. Это хороший результат. Собственно, никто больше и не обещал. Уникальные файлы в WinSxS занимают примерно половину, вот их сжатие и дает выигрыш места. Если бы Вы, не дай бог, конечно, попробовали печально известный WinSxSLite, и умудрились не угробить им систему, то результат был бы значительно хуже.

  24. Ариша:

    Всё поэтапно получилось — папка полегчала более чем на 3 га, и стала «весить» 5,14 Гб (на диске — 4,57). Со сменой и возвращением владельца тоже удачно. Спасибо.

  25. DRON:

    На моей машине (Win7-64) winsxscompact.cmd вызывает жуткую утечку в cmd.exe. К концу его работы WorkingSet был более 5Г. Думаю это и есть причина того, что у некоторых в конце не отрабатывает pause и имеются проблемы с обновлениями. Дело в том, что при нехватке памяти cmd.exe вылетает потихому, без каких либо сообщений, то есть до «icacls %Windir%\winsxs /setowner «NT Service\TrustedInstaller» /T /L /C» (и тем более до pause) дело просто не доходит.

    PS: Из 11Г удалось освободить только 1.5Г. Винде 2.5 года.

  26. Alex:

    Та же история на виртуалке с вин 8 х86 и гб. памяти.

    • Используемые команды действительно активно задействуют память, но если на компьютере установлено хотя бы 2ГБ (думаю, что таких большинство), то проблем никаких. Но в принципе замечание правильное. Вставлю в командный файл отлов на меньше 2-х.
      Если не секрет, зачем сжимать winsxs на виртуальной машине?

  27. Vika:

    Если запустить эту команду:
    Compact /U /A /I /S:C:\Windows\winsxs
    вернет ли это все в исходное состояние до запуска скрипта?

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

  28. Дмитрий:

    Приветствую всех!
    По поводу 32-х и 64-х разрядных версий. У меня Win7 x64.
    Ковырялся почти полчаса, пока не понял, в чем причина, оказалось все просто.
    Я делал все в PowerShell, так вот если запускать PowerShell(х86), то Dism запускается 32-х разрядная, даже если запускаешь насильно из папки SysWOW64, и выдает ошибку 11.
    Соответственно, если запускать из «нормальной» PowerShell, то запускается «правильная» Dism :-)
    Так что скрипт тоже просто запустил из PowerShell и никаких ошибок :-)
    Дополнительный плюс — окно само не закрывается, независимо от наличия паузы в скрипте.
    К сожалению, не засек, сколько была папка ДО, по общему объему свободного места ужалось гектара на полтора-два.
    Попробую еще на одном компе, отпишусь.

  29. Дмитрий:

    Продолжаю эксперименты….
    Папка backup после DISM сжалась примерно на 40 метров, хотя и была-то небольшая — около полгектара. Это странно, т.к периодически запускаю CCleaner, а он хвосты от апдейтеров должен сам чистить.
    Папка winsxs в итоге похудела на — с 8,5 до 7

  30. Кино модели:

    Что плохого в том, что решение с хабра сжимает не только уникальные файлы, но и хардлинки из program files ? Пускай сжимает, раз цель снизить размер. Мало того, для HDD часто рекомендуют специально сжимать Program Files для ускорения запуска программ, так как скорость считывания вырастает почти в 1.5 раза.
    Например, сжатая C:\Program Files\Adobe\ у меня весит 3.3гб против 5.3 несжатой.

    • Если стоит задача уменьшить размер любой ценой, то ничего плохого. По такой системе можно и весь диск сжать, выигрыш места будет еще больше. Однако, влияние ntfs-сжатия на скорость считывания информации не так однозначна, как Вы говорите. Мои измерения, которые я планирую опубликовать в самое ближайшее время, показывают, что в большинстве случаев имеет место все же падение скорости считывания. Особенно на SSD. Интересно, где Вы взяли информацию о полуторакратном ускорении запуска программ? С чего бы ему взяться? Киньте ссылку. Именно поэтому я предлагаю сжимать только редко используемые файлы — так и место освободится и на скорости работы системы такое сжатие никак не отразится.

  31. Кино модели:

    Весь диск сжимать не стоит, так как скорость записи всё же падает при сжатии, а это и запись временных файлов, и прочих данных. Но вот на чтение бинарных данных сжатие действует положительно. Эффект заметен на медленных HDD, на SSD конечно разницы нет.
    Бенчмарк — http://habrahabr.ru/post/106684/ , в частности во времена Windows 7 сжатие папки Windows и Program Files значительно ускоряло загрузку системы. Сейчас на Windows 8 их так же сжимаю (не целиком, частично), в Program Files бонус только одной папки Adobe в 2гб описал выше, C:\Program Files (x86)\Common Files\ 1.5->1gb, Microsoft Office 920->520, Windows — 19Gb->15gb, сжаты только Winsxs (7.7->5.3), assembly (850->550), system32 (только корень) 1.75->1.2, DriverStore сжимать смысла нет но можно, из 2.1 выигрыш только 200mb.
    То есть главное правило такое — сжимать не редкоиспользуемые файлы, а редкозаписываемые файлы, то есть только то, куда нет записи и используется в основном только на чтение или запись идёт ну очень редко. Именно поэтому ненужно сжимать тот же реестр system32/config или весь users.

    • Основное увеличение скорости загрузки, описанное в статье по ссылке, было достигнуто все же не за счет сжатия папок, а благодаря оптимизации самого процесса загрузки системы и выключения из нее некоторых «тугодумных» сервисов. Хотя да, в данном конкретном случае, когда система пытается одновременно считать в память содержимое большого количества файлов, некоторый выигрыш от сжатия может иметь место.
      Имеет смысл вернуться к этой теме после того, как я размещу статью с материалами своих тестов скорости чтения ntfs-сжатых данных разного типа. Там все очень неоднозначно получилось.

  32. Кирилл:

    Здравствуйте! Очень заинтересовала данная проблема и ваши исследования её. Спасибо за проделанную работу!
    У меня к сожалению возникла проблема, как мне кажется не описанная выше.
    В msconfig никаких упоминаний о загрузке в безопасном режиме я не нашёл.
    Возможно моя проблема усугубляется тем, что делаю я всё это в режиме аудита системы (делаю сборку винды, для последующей раскатки её посредством акрониса).
    Спасибо! Очень надеюсь на вашу помощь!

    • Не очень понял технологию подготовки системы к клонированию. А нельзя ли выполнить все подготовительные операции в режиме обычной загрузки, а аудит запустить непосредственно перед Акронисом? Впрочем, не важно. Команда dism включена в пакетный файл для случая обновления Windows 7 до SP1. Если у Вас система изначально Windows 7 SP1, то можете смело dism из командного файла убрать. А вообще буквально на днях в отношении очистки WinSxS в Windows 7 произошли важные изменения. Я как раз сейчас готовлю об этом статью. Хотя именно сжатие остается актуальным.

  33. Кирилл:

    Спасибо за оперативный ответ!
    Система уже обновлена до SP1.
    Скажите, а можно где-то почитать про новую информацию или вкратце услышать её здесь?

    • Кирилл:

      Я удалил строку
      dism /online /Cleanup-Image /spsuperseded /hidesp
      Этого достаточно?
      Сейчас после удаления этой строки у меня всё запустилось, но программа пишет что в доступе ко всем файлам отказано. как результат нулевое сжатие.

    • Думаю, что Вы запускаете командный файл не от имени Администратора. Dism в командном файле параллельно использовалась для проверки.
      Надеюсь, что статья о новых возможностях появится до конца недели.

  34. Кирилл:

    Всё строго от имени Администратора!

    • Ага. Все правильно. Сообщение от icacls говорит, что Администратора она не распознает. У вас Windows 7 случайно не английский?

  35. Кирилл:

    Да вроде нет) Всё на русском:-)
    Тем не менее «Администратор» написано на английском.
    Может это издержки режима аудита, а может где-то мой косяк. Я так понимаю нужно в файлике переписать что-то?

    • Совершенно верно. Командный файл рассчитан на русские версии Windows и запуск в обычном сеансе. Просто сделайте свой вариант. В командах поменяйте «Администраторы» на «Administrators».

  36. Кирилл:

    Огромное спасибо за помощь! Всё заработало. Сжало с 12.7 Гб до 9.4 Гб.
    Подскажите пожалуйста насколько целесообразно и безопасно для производительности в целом сжимать папку с\windows\installer ?

    • Точно безопасно. По поводу скорости после ntfs-сжатия смотрите самый свежий пост. Зависит очень от многих факторов. Сам я Installer не сжимал, зато перенес с SSD на второй диск (обычный механический). Система после такого переноса продолжает работать с SSD очень быстро. Так что, думаю, сжимать можно смело.

    • Кино модели:

      так в Installer одни сжатые msi, их сжимать смысла нет.

    • Замечание верное, хотя есть и несжатые папки, но их немного.

  37. Кино модели:

    В целом да, у меня сжалось с 205 до 164.

  38. Денис:

    Доброго времени суток!
    Подскажите — можно ли воспользоваться стандартной утилитой для создания символических ссылок на каталоги в Windows 7, переместив вышеуказанную папку на другой диск?

    • Здравствуйте. Под стандартной утилитой что подразумевается? Проводник? Если да, то возникнут трудности создания ярлыков на диске C:\ — в контекстном меню возможность создания ярлыков отсутствует. Можно попробовать создать ярлык конечной папки в другом месте с последующим переименованием и копированием. По моему проще в командной строке или в FAR.

  39. Здравствуйте, тезка.
    Застрял в самом начале
    Из командного файла слово «Администраторы» прочлось, как крякозябры (видимо, кодировка). При наборе команды руками в шелле ответил: недопустисый параметр «Администраторы». При наборе Administrators повторяет — недопустимый параметр «Administrators:»..
    Стоит Win7 64 русская, группу вижу только как «Администраторы». Че делать не знаю. Подскажите пож ?

  40. .. может действовать не от группы, а под Админом? Ему все и передавать? (не пробовал еще)

    • Чудес на свете не бывает. Тут что-то с кодировкой. Наберите в командной строке
      chcp — команда покажет текущую кодировку консоли. Командный файл “winsxscompact” сделан в CP866 (она же OEM). Если кодировка консоли отличается, то можно попробовать перекинуть ее командой chcp 866
      В принципе можно выполнять все команды и под текущим пользователем если он входит в группу администраторов. Но команды, естественно, придется подправить.
      Для начала обязательно прочитайте новую статью по этой теме.

  41. Решил все через уч. запись Админа. Первый цикл удался с таким вот синтаксисом:

    icacls C:\Windows\winsxs /save «C:\winsxs.acl» /t
    takeown /f «C:\Windows\winsxs» /r
    icacls «C:\Windows\winsxs» /grant «%USER\Администратор%»:(F) /t

    Скрипт отработал оч хор, спасибо.
    А вот на возврате регалий Инсталлеру пошла лажа:
    на первую строку
    icacls «C:\Windows\winsxs» /setowner «NT Service\TrustedInstaller» /T /L /C
    машина закончила ответом [успешно 45 300, не удалось 11069]
    а на восстановление из ACL
    icacls . /restore «C:\winsxs.acl» /L /C
    в каждой строке было [не удается найти указанный путь]
    итог [успешно 0, не удалось обработать 56369 файлов]
    И когда это успели изениться НУ ВСЕ-ВСЕ пути WinSXS ? Да и количество файлов аж на 1000 больше, чем в отчете «icacls» (46406). Тем не менее — скрипт работает !

    • Затрудняюсь указать точную причину по которой icacls не смогла сделать NT Service\TrustedInstaller владельцем такого количества файлов. Не висели ли на момент выполнения операций неустановленные обновления? Можно попробовать тормознуть соответствующие сервисы:
      sc stop msiserver
      sc stop TrustedInstaller
      sc config msiserver start= disabled
      sc config TrustedInstaller start= disabled
      Пробел перед disabled обязателен. Далее все команды. После завершения всех операций с WinSxS:
      sc config msiserver start= demand
      sc config TrustedInstaller start= demand
      Пробел перед demand обязателен.
      Что касается восстановления разрешений из файла, то, естественно, никакие пути не поменялись и я бы попробовал так:
      icacls C:\Windows /restore C:\winsxs.acl /L /CВместо этого можно просто «отнять» у Администратор повышенные права:
      icacls C:\Windows\winsxs /T /L /grant:r Администратор:(RX)

  42. Клякса:

    Я когда то тоже ломал голову, как уменьшить winsxs. И тоже использовал WinSxSLite, но толку не было никакого! А потом мне пришла в голову мысль — а что если просто заменить winsxs на уже почищенный? Нашёл легкую версию Виндоус от Lopatkin, вынял winsxs (примерно 120 мб), В дистрибутиве удалил старый и вставил вместо него этот. И всё. Очень просто, и всё работает. Уже много лет такая система работает без запинок как дома, так и на работе. Кстати, winsxs не увеличивается! И забудьте вы эти танцы с бубном! Всё очень просто! Удачи!

    • Если не секрет, конечно, если папка не увеличивается, то куда деваются файлы новых обновлений? У Вас система обновляется?
      Вопрос второй — WinSxS примерно на половину состоит из жестких ссылок на системные файлы в других каталогах. Они то куда делись?
      В конечном счете сколько места у Вас занимает папка?
      Кстати о «танцах с бубном». Во-первых, в Windows 8 / 8.1 они, как бы уже и не нужны. После обновления KB2852386 они уже не очень нужны и в Windows 7 — предложенный мной способ уменьшения объема за счет ntfs-сжатия теперь можно рассматривать как дополнительный. А то, что Вы сами делали:

      Нашёл легкую версию Виндоус от Lopatkin, вынял winsxs (примерно 120 мб), В дистрибутиве удалил старый и вставил вместо него этот.

      — это, как бы не «танец с бубном»? :-)

  43. Клякса:

    Нет, систему я не обновляю, считаю это абсолютно не нужным. После 4 лет использования, папка весит 153 Мб.(изначальная — 120 Мб). Куда делись ссыслки я и понятия не имею, да мне это и не интересно. Самое главное, что всё функционирует на отлично! Ни сбоев, ни глюков! Насчёт танцев с бубном. Естественно я только на winsxs не останавливаюсь, также убираю из дистрибутива всё лишнее, а лишнего в Виндоус очень много!
    Так а я ведь не настаиваю, просто предложил другой вариант, на мой взгляд более надёжный и проверенный временем. Но вам самим решать…

    • Нет, систему я не обновляю, считаю это абсолютно не нужным.

      — очень смелое решение. Этакий рукотворный «Zero-day». Я бы точно не решился работать в такой системе ни под каким предлогом. А главное, в чем смысл? В «многолетней» 7-ке WinSxS занимает 7ГБ. Примерно 50% из них — жесткие ссылки, которые на самом деле дополнительного места на диске не занимают. Т.е. получается, что файлы, связанные с обновлениями, занимают 3-4ГБ. Смотрим сколько сегодня стоит 1ГБ на HDD. Примерно 0.2 у.е (~7 руб). Стало быть для хранения 4ГБ нужно однократно потратить 0,8 у.е. (26 руб). SSD будет, естественно, подороже — 1ГБ ~1 у.е. Стало быть, опять же однократно, будет потрачено примерно 4 у.е. (130 руб). Неужели это стоит того, чтобы так подставляться?

  44. Вячеслав:

    здравствуйте
    может я чего не понял, но скачанный архив winsxscompact.rar пустой. открывал плагином в TC. пароля архив так же не спрашивал(((

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

  45. Роман:

    Добрый день.
    Командной строкой уменьшил папку с 18,9 гб до 13,4.
    Спасибо )

  46. Роман:

    делал Dism /online /Cleanup-Image /spsuperseded /hidesp
    вин7 х64

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

  47. Денис:

    Подскажите,а каким образом в скрипт добавлять %Windir%\System32 ? при вылетающей 11 ошибке…
    Достаточно ли переименовать скрипт в тхт формат и добавить строку к Dism /online /Cleanup-Image /spsuperseded /hidesp ….
    Просто по идее скрипт отрабатывает,но в конце вылетает не предложив нажатия энтер. И при выполнении в окне мелькает,что запаковано 0 .
    Места не прибавляется кстати тоже! скрин делал до скрипта и после выполнения.

    • Денис здравствуйте. Для начала хотелось бы понять в какой системе Вы запускаете скрипт. Что такое 11-я ошибка? Система не находит dism?
      В тхт переименовывать не надо. Просто откройте файл в блокноте, а лучше для работы в нужной кодировке в редакторе «Far» или в «Notepad ++».
      Хотелось бы поточнее понять что именно отрабатывается. Дело в том, что в разных версиях Windows выполняются разные команды, описанные в новой статье.

    • Денис:

      скрипт запускается в операционке вин 7х64 ошибка 11 это не видит dims…хотя процесс запускается после не продолжительного простоя.

  48. AlexKoma:

    Получил ссылку на скрипт. Но взять не могу. Соединение сбрасывается.
    Что-то на том конце не так или я такой счастливый?

  49. AlexKoma:

    Решил испробовать:
    Установил на виртуалку сборку Win7_Pro_sp1_Optim_x64. Занимаемый размер 4.5Гб.
    Далее установил все обновления(без FrameWork), собранные WSUSOffline(860мб), UpdatePack7R2-14.5.1, Microsoft .NET Framework 4.5.2 Final и WindowsUpdate online (1 обновление). IE оставил 9-й. Занятый объем увеличился до 8.6Гб. После использования скрипта — 7.5Гб.

  50. Дмитрий:

    при запуске скрипта выдает ошибку controlservice 1062 и говорит что служба не запущена

    • У Вас некая проблема со службой wscsvc — «Центр обеспечения безопасности». Можно предположить, что она просто не запущена. Приводите в порядок сервисы.

  51. Семён:

    самая последняя версия dism.exe есть только в windows adk и та версия поддерживает больше команд нежели те что в win 7 всроенные, по этому всем качать windows adk если хотите максимального результата

  52. Дмитрий:

    Столкнулся с проблемой: на ноутбуке 2Гб RAM, но 64Мб уходит по Intel HD Graphics, поэтому скрипт говорит что недостаточно памяти. Непонятно что делать. Скажем, типовый офисный комп сделан на базе Celeron G1620 + 2Gb RAM + SSD 60Gb. Это что ж теперь, в каждый комп \ ноут втыкать на время очистки дополнительный модуль памяти из-за встроенной графики?

    • Самый простой вариант, это изменить пороговое значение минимальной памяти в командном файле. Откройте файл в редакторе, найдите строку
      IF %MEMTOTIN% GTR 2048 (GOTO :COMPRESS)
      и замените «2048» на нужное вам значение.
      Я ввел ограничение после того, как появились жалобы пользователей на то, что на компьютерах с маленькой памятью скрипт иногда не дорабатывает до конца. Думаю, что 64 Мб роковой роли не сыграют.

  53. Грустный Николай:

    Товарищи! Паамааагитте!!!!!
    У меня SSD маленький:( из 32гб осталось 2гб(катастрофааааа…) Win7 x64
    Процедуры по ntfs сжатию уже не помогают, есть надежда на команду dism /online /Cleanup-Image /spsuperseded /hidesp но командная строка выдает сообщение:
    ‘Ошибка: 1260
    Эта программа заблокирована групповой политикой. За дополнительными сведениями обращайтесь к сис. админу… и т.д. и т.п.’ Комп домашний, с помощью утилиты psexec на всякий случай отключил всякие там груповухи, но результат тот же…
    Посоветуйте что-то, please!!!

    • Стандартная 64-разрядная Windows 7 на диске 32 Гб — это не серьезно. Только перенос системы на SSD большей емкости или установка второго жесткого диска.

  54. Alex:

    Несколько комментариев относительно скрипта:
    чтобы не возникало проблем с именем группы на разных языковых версиях ОС, нужно использовать SID вместо имени группы;
    менять владельца/права всем файлам нет смысла, потому что модифицируется только часть — им и надо менять;
    восстанавливать права будет правильнее через icacls /reset;
    останавливать службы надо после запрета, а не до, потому что есть вероятность, что служба будет рестартована.

    • Думаю, что рекомендации весьма разумные. Спасибо. Однако нет предела совершенству. Например, можно еще файлы в подпапке Backup вообще не проверять и сжимать сразу.
      А есть ли готовый вариант скрипта с оптимизированным алгоритмом?

    • Alex:

      Т.к. меня интересовало только сжатие, то я написал свой собственный скрипт, взяв некоторые идеи из вашего. Вдобавок к уже сказанному, я сделал проверку на минимальный размер файла (сжимать файлы менее 4 КБ нет большого смысла, а файлов таких очень много) и на то, что файл уже сжат (это позволяет сделать рестарт скрипта и не ждать пока те же самые файлы будут пытаться сжиматься повторно).
      Текст скрипта тут.

    • На первый взгляд все весьма разумно и красиво. Главное, что заметно уменьшено количество лишних операций.
      Маленькое уточнение — compact по определению не сжимает файлы меньше 4 Кб, так как и не может их сжать. Да и повторное сжатие, если не ошибаюсь, делать не пытается. Тем не менее проверка этих атрибутов до смены разрешений весьма разумна.
      Могу я использовать элементы вашего кода для модификации скрипта winsxscompact?

    • Alex:

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

    • OK и спасибо. Тестировать на время думаю особого смысла не имеет — сжатие WinSxS это все же операция не для каждого дня.

    • Наконец дошли руки переделать winsxscompact. Сегодня выложил переделанный вариант. Еще раз спасибо за идею и код.

  55. Samowol:

    Добрый день!

    Подскажите, пожалуйста, в чём возможная ошибка у меня в Windows Vista при запуске командного файла “winsxscompact.cmd”.
    Собственно запуск приводит к следующему:

    [SC] ControlService: ошибка: 1062

    Служба не запущена.

    [SC] ControlService: ошибка: 1062

    Служба не запущена.

    [SC] ChangeServiceConfig: успех
    [SC] ChangeServiceConfig: успех
    _

    Курсор мигает, но ничего напечатать не даёт.

    Заранее благодарю за ответ!

    • Здравствуйте! К сожалению сейчас под рукой нет компьютера с Vista. Если получится установить ее в виртуальную машину, то тогда смогу ответить что-то конкретное. Как я понимаю, все описанное происходит при выборе «2 — NTFS-сжатие уникальных файлов в папке WinSxS»?

    • Трагизм ситуации оказался в том, что в Vista команда «fsutil hardlink» не умеет определять и показывать жесткие ссылки. Стало быть алгоритм не отрабатывается и идет пустой перебор файлов в папке winsxs. Прошу прощения, что ввел в заблуждение и спасибо, что сообщили об ошибке.
      Если скрипт у Вас до конца не отработал, то выполните в командном окне с правами администратора:
      sc config msiserver start= demand
      sc config TrustedInstaller start= demand

  56. Алексей:

    Спасибо! Все прошло успешно.освободил 1.5гб система вин 8.1 64бит

  57. Angel Of Nemesis:

    Пользуюсь WinSxSLite, всё работает хорошо, но тут есть нюансы:
    1. Использовать WinSxSLite только 1 раз после обновлений. Если затем обновить, а потом запустить второй раз, то может вывалиться после перезагрузки на comctl32.dll. В этом случае, следует удалить строки в todo, чтобы он его не трогал. Проделывал это на 32 битке всё нормально.
    2. Нельзя использовать на 64 битке, WinSxSLite поудалит то, что нужно для системы, у меня, по крайней мере этот трюк не вышел :)

    • Спасибо за информацию. Свое отношение к WinSxSLite я выразил в самой первой публикации на эту тему. Утилита очень грубо вмешивается в работу системы обновлений Windows, что на мой взгляд недопустимо так как чревато всевозможными неприятностями. Кроме того, после того, как Microsoft добавила сначала в Windows 8, а потом и в Windows 7 штатные способы обслуживания обновлений, можно считать этот вопрос практически закрытым.

  58. Дмитрий:

    выполнил скрипт winsxscompact по очистке обновлений, теперь не пойму — он удаляет все обновления или очищает остаточные файлы?

    у меня теперь регулярно просятся установиться девять одних и тех же обновлений, при чем старых.. в списке обновлений говорит, что в системе вообще нет обновлений — что лучше сделать?

  59. Владимир:

    Добрый вечер, возник вопорос из за одной проблемы у нас с братом.
    перенос папки на другой диск а конкретно создание ссылки на эту папку может
    привести к не возможности установить обновления?
    у меня с IE проблема на вин 7 не могу ни 9 ни 10 поставить брат с++ 2015 не ставится из не возможности поставить какое то обновление

    и одна и также ошибка в файлах лога у нас 000017
    (не могу перенести файл на другой диск) смысл её такой.
    как раз я ему и себе папку WinSxS перенёс на другой хд.
    и спасибо за статью)раньше своими силами переносил а теперь дополню свой батник нужными вещами из статьи))

    • Добрый вечер! Папку WinSxS нельзя переносить на другой диск. В ней огромное количество жестких ссылок, а они работают только в пределах одного диска. Так что проблемы не только могут быть, но будут обязательно.

  60. Владимир:

    спасибо за ответ теперь понятно что накосячил…просто у брата папка весила 7 гогов и место заканчивалось..не думал что возникнут такие проблемы. жаль раньше не встретил эту статью…
    подскажите статью грамотную для востановления WinSxS если такая имеется win81 64.

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

  61. Владимир:

    спасибо.возврат помог, обновления пошли.

  62. Игорь:

    Скрипт не хочет отрабатывать на сжатие. Windows 7 Home Basic
    Ошибки имеют вид:

    C:\Windows\winsxs\Backup\x86_microsoft-windows-winlogon-sysntfy_31bf3856ad364e35
    _6.1.7600.16385_none_554949457106dabf_sysntfy.dll_6c0b60ae
    "takeown" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    "icacls" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    "Compact" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    "icacls" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    "icacls" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    "fsutil" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    Все файлы на месте. Спасибо за помощь.

  63. Владимир:

    Жаль, что автор не ответил на последнее сообщение. Поскольку у меня такая же ошибка — тоже пишет, что то-то и то-то не является внутренней или внешней командой. Ошибки 11 нет. Запуск с правами Администратора.

  64. Александр:

    Добрый день!

    Подскажите, пожалуйста, в чём возможная ошибка у меня в Windows 7 Домашняя расширенная Service Pack 1 при запуске командного файла “winsxscompact.cmd”.
    Собственно запуск приводит к следующему:

    [SC] ControlService: ошибка: 1062

    Служба не запущена.

    [SC] ControlService: ошибка: 1062

    Служба не запущена.

    [SC] ChangeServiceConfig: успех
    [SC] ChangeServiceConfig: успех
    _

    Заранее благодарю за ответ!

  65. Иван:

    Спасибо огромное автору за статью, помог фокус со сменой прав, делал чз командную строку. Избавил диск С от 22 Гб треша, очень признателен

Написать комментарий

Subscribe without commenting