Pourquoi le dossier / winsxs s’agrandit-il si grand et peut-il être réduit?

174

Une machine virtuelle Vista que j'utilise ne dispose que d'un disque dur virtuel de 10 Go - et je crains qu'elle ne manque d'espace au fil du temps.

J'ai utilisé TreeSize pour rechercher les coupables.

entrez la description de l'image ici

Et le principal responsable est ce /winsxsdossier ou "Windows Side-By-Side" .

entrez la description de l'image ici

Qu'est-ce que le dossier Windows Side By Side? Eh bien, c'est assez bien expliqué ici .

Tous les composants du système d'exploitation se trouvent dans le dossier WinSxS. En fait, nous appelons cet emplacement magasin de composants. Chaque composant a un nom unique qui inclut la version, le langage et l'architecture de processeur pour lesquels il a été créé. Le dossier WinSxS est le seul emplacement où se trouve le composant sur le système. Toutes les autres occurrences des fichiers que vous voyez sur le système sont «projetées» par une liaison définitive depuis le magasin de composants. Permettez-moi de répéter ce dernier point - il n'y a qu'une seule instance (ou copie de données complète) de chaque version de chaque fichier dans le système d'exploitation, et cette instance est située dans le dossier WinSxS. Vu sous cet angle, le dossier WinSxS représente en réalité l’intégralité du système d’exploitation, qualifié de «plat» dans les systèmes d’exploitation de bas niveau.

Cela explique pourquoi le dossier commence gros, mais pas pourquoi il s’agrandit avec le temps - la réponse à cette question est la maintenance. Dans les versions précédentes de Windows, l'unité atomique de maintenance était le fichier, dans Windows Vista, c'était le composant. Lorsque nous mettons à jour un binaire particulier, nous publions une nouvelle version de l'ensemble du composant. Cette nouvelle version est stockée à côté de la version d'origine dans le magasin de composants. La version supérieure du composant est projetée sur le système, mais l'ancienne version du magasin n'est pas modifiée. La raison en est la troisième raison pour laquelle le magasin de composants devient si volumineux.

Beaucoup d'autres personnes se plaignent de la taille du dossier / winsxs également :

Un collègue a récemment reçu une actualisation de son ordinateur portable tous les deux ans et était en train de charger son nouvel ordinateur portable avec Vista. Pour une raison quelconque, son disque dur C: a été partitionné à seulement 25 Go et le reste de l’espace réservé à un lecteur beaucoup plus volumineux, D :.

Quoi qu'il en soit, après avoir chargé de nombreuses mises à jour Windows, il ne lui restait pratiquement plus d'espace disque sur C: et, pour une raison quelconque, le répertoire WinSxS avait atteint la barre des 8 Go.

Bien que je sache à quoi servait le répertoire WinSxS (Windows Side-by-Side), je ne savais pas trop pourquoi ce répertoire allait exploser si rapidement avec des mises à jour normales du système d'exploitation.

Je ne me soucie pas vraiment d'avoir tous ces fichiers en double pour la sécurité, mais je fais attention à propos de la machine virtuelle exploser en raison d'une erreur sur l' espace disque. Alors ... est-ce que / winsxs peut être réduit en toute sécurité? Il ne semble pas que cela puisse être ..

Les administrateurs ne doivent, pour aucune raison, prendre l'initiative de nettoyer le répertoire / winsxs. Cela pourrait empêcher le bon fonctionnement de Windows Update et de MSI par la suite. Pour empêcher la suppression accidentelle du répertoire, vous devez mettre un descripteur de sécurité fort sur le répertoire qui hérite de ses enfants.

Si ce dossier / winsxs devient plus volumineux, je vais devoir re-image cette machine virtuelle .. ce que je ne veux vraiment pas faire!

Jeff Atwood
la source
24
TreeSize Free ... J'utilise windirstat.info à cet effet ;-)
Steve Schnepp Le
6
Ne pouvez-vous pas développer la VM et étendre la partition principale?
Sam Saffron
1
Vous pourriez utiliser ceci: windowsfixup.com/2009/05/… personnellement, je resterais à l'écart si je ne pouvais pas trouver le code source
Sam Saffron le
11
Il y a beaucoup de liens durs dans Winsxs, la taille est donc souvent surestimée.
Greg D
4
Première question sur SuperUser
puretppc le

Réponses:

101

Il existe une commande intéressante qui nettoie après une installation de Windows 7 SP1 (elle m’a sauvé environ 3 Go):

DISM /online /cleanup-Image /spsuperseded

Doit être exécuté à partir d'une invite de commande avec privilèges élevés

GvS
la source
2
excellent, je pensais juste à nettoyer Windows 7 SP1
Jeff Atwood Le
6
Existe-t-il d'autres commandes pour Windows 7 pouvant également supprimer les sauvegardes de mises à jour non-SP?
galacticninja
8
Sinon, vous pouvez utiliser l'option "Nettoyer les fichiers système" de l'outil Nettoyage de disque et supprimer les fichiers de sauvegarde du Service Pack.
Michał T
5
@ Pies, j'ai d'abord exécuté le nettoyage de disque et DSIM s'est toujours débarrassé d'un surplus de ~ 3 Go (mesurant% d'espace disque libre, pas la taille du dossier). Donc, ça vaut la peine de faire les deux.
mat wilkie
3
@ UpTheCreek, vous êtes sûr? Après avoir nettoyé le disque, nettoyé les fichiers système, je reçoisC:\Windows\system32>DISM /online /cleanup-Image /spsuperseded Deployment Image Servicing and Management tool Version: 6.1.7600.16385 Image Version: 6.1.7600.16385 Service Pack Cleanup can't proceed: No service pack backup files were found. The operation completed successfully.
Cees Timmerman
44

TL; DR

Winsxs contient en fait des liens durs . Cela ne prend pas autant de données supplémentaires que vous le pensez.

Un lien physique est comme un "raccourci" ou un "pointeur" vers un fichier réel situé quelque part sur votre disque. Un lien dur ne prend pas d’espace disque en lui-même: il sert simplement de redirection.

Winsxs étant composé de liens physiques, la suppression de ces liens ne libérera aucun espace. Les fichiers réels continueront de rester à divers emplacements sur votre disque.


Winsxs n'est pas un problème

... c'est une solution! (Enfin, surtout .)

Un résumé, "marqué comme réponse par Ronnie Vernon, MVP, modérateur", dit ici :

Wow, longue discussion sur les liens durs et WinSxs. Quoi qu'il en soit, voici quelques points résumés de ce que j'ai compris de la façon dont tout cela fonctionne.

Pour commencer par répondre à la question du PO avec la réponse parfaite publiée ci-dessus par Andre.Ziegler, vous ne touchez pas à winsxs. Certains fichiers peuvent être coupés comme les fichiers MP3, AVI, etc., mais le reste des fichiers système doit être laissé tel quel . Moi aussi, j'utilise Link Shell Extension comme indiqué ci-dessus par Ronnie Vernon, un moyen facile de voir quels sont les liens durs (flèche rouge) et quels sont les fichiers simples.

Avant d'arriver ici, j'ai vu dans de nombreux endroits des personnes demander l'outil de nettoyage après avoir installé SP1 pour Windows 7, comme vsp1cln. Il n'y a pas d'outil dédié, tout a été intégré au service de nettoyage de disque. Une remarque que je voudrais faire ici est que même si l'option indique qu'elle supprimera quelques centaines de Mo après avoir nettoyé mon disque, le service supprime environ 3 Go de fichiers en excès, de sorte qu'il varie d'un système à l'autre. C'est marrant, j'ai encore plus d'espace qu'avant l'installation de SP1. Bien aimable, MS.

En ce qui concerne les liens durs, je me suis amusé à la confusion créée autour d'eux. Je ne suis pas un geek sous Linux, et je n'utilise généralement que des liens souples ... ils me suffisent, mais les gens ne comprennent pas comment les points durs fonctionnent et comment la taille est comptée.

Un groupe de fichiers sélectionnés, liens ou non, sera toujours compté comme une somme. Cela signifie que si je prends un fichier de 10 Mo et crée 2 liens durs, la sélection de ces trois aura 30 Mo. La taille est correcte, car contrairement aux liens symboliques liés à l'entrée de fichier d'origine du fichier principal et avoir 0 octet, les liens physiques sont liés aux données elles-mêmes , ont leur propre entrée dans MFT mais pointent vers la même adresse de données, ayant évidemment pour taille la taille des données réelles, les mêmes temps, attributs, etc. Pourquoi, ci-dessous.

Combien reste-t-il sur le lecteur? Simple: exactement autant que les rapports de propriétés du lecteur . N'allez pas sélectionner tous les fichiers, cachés ou non cachés sur C, et faire des comparaisons, ni utiliser des outils qui le font automatiquement car cela ne montrera pas l'utilisation réelle du disque dur. Pourquoi? Parce que:

  1. cette opération crée une liste de tous les fichiers sélectionnés, y compris les liens physiques, sous forme de fichiers séparés, prend chacun d'eux et ajoute les tailles, les propriétés des lecteurs comptent les données stockées réelles
  2. tous les fichiers ne seront pas comptés, les dossiers protégés de toute traversée et les fichiers de lecture ne seront pas comptés et les informations de volume système contiennent généralement de très gros fichiers protégés de cette manière.
  3. Ce numéro est utile uniquement en cas de transfert de fichier, si les fichiers, liens, etc. doivent être copiés sur DVD ou NAS, c'est combien ils occuperaient, et les liens ne seront pas conservés car il s'agit de fonctionnalités spécifiques à NTFS, non disponibles. ou disponible sous différentes formes sous ISO, UDF, NFS et d'autres systèmes de fichiers, mais ils seront clonés.

Faites un test ... copiez un fichier a.exe de 10 Mo à partir d'un autre lecteur et notez que l'espace libre est réduit de 10 Mo. Établissez un lien physique (mklink / H b.exe a.exe). Désormais, ces deux fichiers sélectionnés "utiliseront" 20 Mo dans les propriétés de sélection , mais en réalité, seuls 10 Mo seront vérifiés dans les propriétés du lecteur , ce qui laissera le même espace disponible après la copie du fichier. Supprimez un, l'un ou l'autre, l'espace libre restera le même. Supprimez maintenant le dernier et l'espace augmentera de 10 Mo. Y at-il du mal à faire? NON.

Qu'est-ce que Winsxs? Un bien meilleur dllcache. Là où avec dllcache dans XP, nous avions des copies de fichiers qui ajoutaient réellement à la taille d'utilisation depuis leur clonage, cela améliore réellement l'utilisation mais pas la protection totale (contre les virus). Si un programme de désinstallation malhonnête pense qu'il doit supprimer certaines bibliothèques d'exécution de System32, il ne supprimera que les liens, mais pas les données. Les liens seront alors recréés tout en maintenant l'utilisation de l'espace de données au plus bas possible, mieux que l'archivage de winsxs dans les cabs. les taxis à côté des dossiers originaux. Winsxs apporte également la sérialisation, en compartimentant les fichiers avec le même nom mais une version différente, pour le dev, ce qui est une bonne / mauvaise chose, cela les rend paresseux pour coder correctement mais cela aide quand ils ne veulent plus coder.

Je l'ai fait pour aider quiconque atterrit ici pour les mêmes raisons que moi ... un "usage excessif de l'espace" par winsxs après le SP1. Et j'espère que c'était utile.

Mateen Ulhaq
la source
Cette réponse n’est-elle pas un aspect extrêmement important qui fait complètement défaut dans la réponse acceptée?
Mafu
33

Ces doublons et sauvegardes sont extrêmement gênants lorsque l’espace disque est limité.

Étant à cet endroit, la seule façon qui ne compromettrait pas la stabilité du système d'exploitation consistait à utiliser généreusement le paramètre "Compresser le contenu pour économiser de l'espace disque" .

En comprimant tous ces répertoires de sauvegarde sous le répertoire Windows, j'ai pu réduire la taille du répertoire de 6,5 Go à 5 Go, sans effets secondaires reconnaissables. L’utiliser sur certains de vos fichiers en dehors du répertoire Window allongerait encore vos 10 Go.

eran
la source
2
J'ai essayé de le compresser et je dis "Accès refusé" au dossier puis à poqexec.log. Supposé que c'était un verrou de lecture. Quelque chose à contourner cela?
Quintin Par
1
En fait, vous continuez de compromettre la stabilité de votre système d'exploitation. Le dossier WinSxS ne doit PAS être compressé. En fait, c'est une très mauvaise idée. Il suffit de google 'compresser winsxs' et vous découvrirez.
Bonjour71
6
Je ne suis pas sûr que cette technique soit une bonne idée - de nombreux fichiers dans l'arborescence de WinSxs sont des liens en dur. L'activation de la compression sur ces fichiers compressera-t-elle toutes les instances du fichier? Il pourrait y avoir des conséquences inattendues sur les performances.
duffbeer703
3
@ FiascoLabs, avez-vous remarqué qu'il s'agit d'une question vieille de 4 ans, qui fait spécifiquement référence à un lecteur de 10 Go? Vous pourriez aussi bien affirmer que "personne n'utilise Vista". C'est peut-être vrai maintenant, mais ce n'était pas le cas à l'époque où la question a été posée.
eran
1
@eran Pourtant, toutes les questions Win7 à propos de WinSxs sont résolues en double exemplaire
Tobias Kienzler
27

Si vous avez Vista et que vous avez installé le SP2, vous pouvez nettoyer les anciens fichiers système avec le nouvel outil de nettoyage du Service Pack .

  1. Cliquez sur Démarrer> Tous les programmes> Accessoires> Invite de commandes ou cliquez sur Démarrer> Exécuter et tapez cmd pour ouvrir l'invite de commandes Windows.
  2. Exécutez la commande "Compcln.exe". Le chemin est "c: \ Windows \ System32 \ compcln.exe".
  3. Les utilisateurs se verront demander si Vista SP2 doit rester en permanence dans le système.
  4. Tapez «Y» et appuyez sur Entrée, le système commencera à effectuer le nettoyage des composants Windows.
Tomas Andrle
la source
Je ne pouvais pas localiser cela dans mon Vista SP1
pencilslate
Oui, c'est probablement nouveau dans Vista SP2.
Tomas Andrle
4
N'a pas sauvé tant pour moi, mais je peux confirmer que l'outil existe et il m'a sauvé G plus
JTI
Compcln.exe n'est pas dans W10.
Laurie Stearn
21

Sous Windows 8, vous pouvez réduire la taille du dossier WinSxS en supprimant les fonctionnalités de Windows :

DISM.exe /Online /Disable-Feature /Featurename:<name> /Remove

L'important est le paramètre / Remove qui est nouveau dans Windows 8 .

Le plus d'espace dans WinSxS est utilisé par WindowsUpdates que vous installez au fil du temps. Sous Windows 8 / Windows 10, vous pouvez détecter et supprimer les mises à jour remplacées par de nouvelles mises à jour (comme les mises à jour cumulatives IE plus récentes) exécutant cette commande:

dism.exe /online /cleanup-image /startcomponentcleanup

ou en exécutant l'assistant de nettoyage de disque et sélectionnez "Windows Update Cleanup"

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

Vérifiez également que vous avez installé la mise à jour de maintenance de la pile http://support.microsoft.com/kb/2821895 .

Cette mise à jour exécute un nettoyage en profondeur de WinSxS et compresse tous les fichiers DLL / Exe de WinSxS qui ne sont pas utilisés actuellement dans un fichier delta plus petit:

entrez la description de l'image ici

Regardez les différentes tailles de fichiers.

Windows 8.1 ajoute de nouvelles commandes DISM . Le /startcomponentcleanupobtient un nouveau paramètre /ResetBasequi rend votre dernière mise à jour permanente et supprime tous les fichiers les plus anciens pour sauver plus d' espace.

Vous pouvez également exécuter une nouvelle commande dism /online /cleanup-image /analyzecomponentstorepour analyser le dossier WinSxS:

entrez la description de l'image ici

Il vous indique maintenant quand vous devez exécuter le nettoyage pour économiser de l'espace.

magicandre1981
la source
2
Ceci est désormais disponible pour Windows 7 SP1: support.microsoft.com/kb/2852386
Mark Henderson
Ici, il était de 12,4 Go sur le disque avant StartComponentCleanup1809. 6,54 Go sur le disque après StartComponentCleanup, une amélioration considérable. 92 suppressions en attente, pas de renommage en attente. Sur les 76812 fichiers de WinSXS , 21452 occupent 2,90 Go sur disque, avec des dates allant de septembre à octobre de la mise à jour de l’ordinateur à 1803. Est-ce typique d’une installation W10 en cours ou sommes-nous toujours bouchés?
Laurie Stearn
1
@LaurieStearn Je n'en ai aucune idée. J'exécute uniquement Win10 sur une machine virtuelle et crée une nouvelle machine virtuelle pour chaque nouvelle version de Win10 sur mon système hôte Windows 8.1.
magicandre1981
9

Bonnes nouvelles! Il existe maintenant une méthode officielle de Microsoft pour Windows 7 SP1 de nettoyer votre dossier WinSXS .

  1. Installez le correctif logiciel 2852386 - vous pouvez le télécharger manuellement ou attendre qu'il soit transmis via Windows Update.
  2. Cela ajoute une nouvelle option à l’assistant de nettoyage de disque (sous Nettoyer les fichiers système) que vous pouvez activer pour «Nettoyage de la mise à jour Windows». Cochez cette option.
  3. Cliquez sur OK

Mise en garde: Il se peut que vous ne puissiez pas désinstaller certaines mises à jour Windows après le nettoyage de votre dossier WinSxS.

Mark Henderson
la source
6

On dirait qu'il existe enfin un moyen de le faire dans Windows 8.1 Service Pack 1 et Windows Server 2012 R2 .

Outil d'analyse de magasin de composants:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

À la fin de l'analyse, l'utilisateur obtient un rapport des résultats (taille réelle du dossier winsxs) comme suit:

résultats d'analysecomponentstore

Nettoyage du magasin de composants:

Aujourd'hui, le nettoyage du magasin de composants doit être déclenché manuellement par un utilisateur final, soit en exécutant DISM, soit en utilisant l'Assistant Nettoyage de disque. Pour rendre Component Store Cleanup plus utile pour l'utilisateur final moyen, il sera ajouté à une tâche de maintenance, ce qui permettra de libérer automatiquement de l'espace disque pour les utilisateurs finaux. Pour l'activer, une modification sera apportée pour permettre la désinstallation des pilotes de boîte de réception remplacés sans nécessiter de redémarrage (aujourd'hui, toutes les installations / désinstallation de pilotes effectuées par CBS nécessitent un redémarrage).

  1. Dism.exe /online /Cleanup-Image /StartComponentCleanup

  2. Outil de nettoyage de disque, bouton Nettoyer les fichiers système.

    outil de nettoyage de disque

  3. schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

Jeff Atwood
la source
4
déjà posté il y a: superuser.com/a/594216/174557 Inutile de poster deux fois la même chose;)
magicandre1981
2

Dism ++ est ce que vous recherchez ( https://www.chuyu.me/fr/index.html ).

Vous économiserez des gigaoctets d'espace ...

Vous devez sélectionner "Assemblages WinSxS remplacés". Si vous le faites, cela vous avertira que ces mises à jour installées ne peuvent pas être désinstallées. Cliquez sur OK, puis scannez

entrez la description de l'image ici

Cela vous donnera une idée de l'espace que vous allez économiser. Hit nettoyage, et il devrait effacer cet espace.

Compagnon Geek
la source
1
Des instructions spécifiques sur l'utilisation de ce programme doivent être fournies. Je peux obtenir le programme de Github mais je ne peux pas visiter le lien que vous avez fourni.
Ramhound
1
J'ai essayé cela sur une machine virtuelle - cela semble assez rapide et rien n'a vraiment été cassé, autant que je sache. Je vais peut-être jouer avec cela, car il semble y avoir quelques fonctionnalités astucieuses de post-installation (sauvegardes de pilotes ooh!). J'ai modifié votre réponse avec des étapes de base et une capture d'écran. Vous devriez voir, espérons-le, la différence et les upvotes sous peu
Journeyman Geek
Outil génial! Contrairement à WinSXSLite, cela fonctionnait et libérait près de 8 Go d'espace pour moi.
Suncatcher
1

J'espère qu'il sera utile d'avoir un simple oneliner, car sinon, la réponse de Jeff Atwood est géniale /ResetBase.

Attention : Ce commutateur permet de réduire considérablement la taille du dossier WinSxS, mais supprime complètement les versions précédentes des composants. Vous ne pourrez donc pas annuler les mises à jour déjà installées. Mais si votre système se comporte bien, vous devriez être en sécurité (surtout si vous n'êtes pas dans l'environnement de production)

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

Cela fonctionne dans Windows 8.1 et versions ultérieures

maoïsme
la source
0

Outre les solutions susmentionnées, un moyen de gagner beaucoup d’espace consiste à compresser l’ensemble du contenu du dossier. Cependant, cela ne peut pas être fait avec Explorer (des droits appropriés sont nécessaires), du moins à partir de Windows 7.

Ces instructions montrent comment y parvenir:

sc query msiserver 
sc query TrustedInstaller

sc stop msiserver
sc stop TrustedInstaller

sc config msiserver start= disabled
sc config TrustedInstaller start= disabled

icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS.acl" /t

takeown /f "%WINDIR%\WinSxS" /r

icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t

compact /s:"%WINDIR%\WinSxS" /c /a /i *

icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t

icacls "%WINDIR%" /restore "%WINDIR%\WinSxS.acl"
del "%WINDIR%\WinSxS.acl"

sc config msiserver start= demand
sc config TrustedInstaller start= demand

sc start msiserver
sc start TrustedInstaller

Notes / conseils:

  1. Le regroupement marque le moyen recommandé d'exécuter ces commandes, si cela est fait manuellement. Normalement, il ne devrait y avoir aucun problème (sauf pour certains fichiers ignorés, car ils sont utilisés), mais le résultat de chaque groupe doit être vérifié.

  2. J'ai effectué ces étapes sur l'installation de divers systèmes d'exploitation à la maison et au travail: Win7x64, Win10x64, Windows Server 2008R2 et Windows Server 2012 et je n'ai vu aucun problème jusqu'à présent.

  3. Certaines étapes prennent un certain temps, notamment le temps de compression. La plupart des étapes itéreront et montreront les fichiers traités. Minimiser la fenêtre d'invite de commande peut prendre un peu de vitesse.

Alexei
la source
-4

Vous pouvez supprimer ces fichiers en toute sécurité. Si vous en avez de nouveau besoin, il vous faudra simplement installer quelques éléments supplémentaires.

Passons maintenant à la solution!

  • Ouvrez l'Explorateur Windows et accédez à C: \ Windows \ System32. Recherchez le fichier "vsp1cln.exe".
  • Cliquez avec le bouton droit sur ce fichier et sélectionnez l'option "Exécuter en tant qu'administrateur".
  • L'outil de nettoyage de Vista Service Pack 1 supprimera tous les fichiers redondants qu'il a remplacés.

La quantité d'espace disque que vous gagnez dépend du système, des programmes installés, etc.

Axxmasterr
la source
16
Vous pouvez supprimer en toute sécurité des fichiers winsxs? Êtes-vous sûr de cela?!
UpTheCreek le