OVH Cloud OVH Cloud

Un script pour gagner (beaucoup) de la place sur la partition système ...

19 réponses
Avatar
Jean-Claude BELLAMY
Hello World !

Il existe dans le dossier %systemroot% (C:\windows par défaut) un sous
dossier "SoftwareDistribution" qui contient tous les fichiers de mises à
jour automatiques de Windows, que ce soit à l'aide de Windows Update ou d'un
serveur W SUS (en entreprise).
Ces fichiers, une fois la MAJ effectuée, ne servent plus à rien, mais par
contre au bout d'un moment occupent une place phénoménale!

Ainsi sur une machine où était installé mon serveur W2K3 cela atteignait 1,5
Go !
Sur ma machine principale sous Win7 (installé il y a seulement 2 mois 1/2)
il y en avait déjà pour 110 Mo, ...

Donc on peut récupérer beaucoup de place en supprimant les fichiers devenus
inutiles.
Mais bien sûr il ne faut pas faire n'importe quoi, et certains fichiers ne
sont pas supprimables par défaut car ils sont en cours d'utilisation par le
service WUAUSERV (Windows Update).

Les manips (préconisées par MS) sont (pour info) les suivantes, afin de
vider "proprement" ce dossier et sans "injurebox", :
==================================================
- stopper momentanément le service "Windows Update"
par la commande
net stop wuauserv
ou, si on préfère,
net stop "Windows Update"
(c'est la MÊME CHOSE, mais dans la 2ème écriture, il ne
faut pas oublier les guillemets à cause de la présence d'un espace)

- ouvrir le dossier %systemroot%\SoftwareDistribution\DataStore

- supprimer le contenu du sous-dossier "Logs"

- supprimer le fichier "DataStore.edb" (gros fichier!)
Cela signifie que l'HISTORIQUE des "Windows Update"
sera effacé (on peut vivre sans !!!)

- ouvrir le dossier %systemroot%\SoftwareDistribution\Download
et supprimer TOUT son contenu.

- vider la corbeille si nécessaire

- redémarrer "Windows Update" par la commande
net start wuauserv
==================================================

Ayant à effectuer cela sur une dizaine de babasses, j'ai écrit un script VBS
qui fait tout ça bien gentiment et automatiquement !

Il tourne sous W2K, XP, W2K3, Vista, Win7 !

Il suffit de la lancer depuis une fenêtre de commandes
clearSD

Il fait appel à WMI (pour l'arrêt et le démarrage de service)
Il est modifiable pour agir à distance, mais pour l'instant j'ai
volontairement désactivé cette possibilité, donc il ne fonctionne qu'en
local.

http://www.bellamyjc.org/fr/vbsdownload.html#clearSD


Bon amusement ! ;-)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

9 réponses

1 2
Avatar
Gilles RONSIN
Droger Jean-Paul , le jeu. 10 déc. 2009
15:02:45, écrivait ceci:

Salut JP,

je pense que tu as le même problème que moi :
pour vérifier démarre une console "[windows] cmd [ctrl]-[shift]-
[entree]"
puis> cd "le chemin du répertoire où tu as placé le script"
puis> clearSD.vbs

et là tu devrais voir le message d'erreur

C:UsersPublicDocumentsscriptsclearSD.vbs(24, 1)
WScript.CreateObject: La classe Automation appelée "WScript.Network"
est introuvable.

Il ne reste plus qu'à trouver cette classe que JCB doit avoir de base
dans toutes ses bécanes mais pas nous....

--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
Avatar
Droger Jean-Paul
Jean-Claude BELLAMY a formulé la demande :
"Droger Jean-Paul" a écrit dans le message de
groupe de discussion :
Jean-Claude BELLAMY avait écrit le 10/12/2009 :
"Droger Jean-Paul" a écrit dans le message de
groupe de discussion :
[...]
mais le résultat est strictement le même, fenêtre de commande, des lignes
défilent trop vite, se ferme et le dossier qui devrait être vide est
toujours remplis de 83 fichiers et 2.6 Mo et quelques ...




Est-ce que tu exécutes bien ce script en tant qu'administrateur ?
(normal, vu qu'il opère dans %systemroot%)



ben oui, je n'ai qu'un compte chez moi (je sais c'est dangereux mais
derrière un routeur/modem netgear + un pare feu entrée/sortie qui ne voit
pas grand chose, je pense que cela est jouable) et il est administrateur
...

de plus comme j'essaie plein de logiciels pour le clun informatique
d'handicapés que je co anime toutes les semaines, je remets environs tous
les 3 mois mon système à jour avec une image Ghost que je refaits dès les
mises à jour faites; c'est un moyen radical pour se débarasser de tous les
parasites que des logiciels (que j'installe provisoirement sur une
partition spécifique, mise à zéro à ce moment là) installent et de se
passer des avatars des nettoyeurs plus ou moins dangereux!!!

et là mes alertes dans le journal des évènements ont disparu, mais hier
j'ai eut cela:

Type de l'événement : Erreur
Source de l'événement : ESENT
Catégorie de l'événement : Général
ID de l'événement : 427
Date : 08/12/2009
Heure : 17:50:28
Utilisateur : N/A
Ordinateur : DROGER
Description :
wuaueng.dll (1176) Le moteur de base de données n'a pas pu accéder au
fichier nommé C:WINNTSoftwareDistributionDataStoreLogsedb.log.


serait ce lié??



OUI.
Mon script efface justement ces fichiers log qui deviennent vite volumineux
(NB: c'est MS qui dit de les supprimer!)

Mais ils sont recréés lorsque Windows Update redémarre, ce n'est pas un
problème.

Au fait, quel est ton OS ?



toujours W2k SP4 à jour des modifs Windows Update et seul .net
Framework 1.1 demandé par je ne sais plus quel logiciel.
bonne soirée.

--
Pour m'envoyer un mail, remplacer anti par droger et manama par
wanadoo; to send me directly a mail replace anti with droger and manama
with wanadoo;

Avatar
Droger Jean-Paul
> Salut JP,

je pense que tu as le même problème que moi :
pour vérifier démarre une console "[windows] cmd [ctrl]-[shift]-
[entree]"
puis> cd "le chemin du répertoire où tu as placé le script"
puis> clearSD.vbs

et là tu devrais voir le message d'erreur





ben là cela marche, suffisait d'être un peu moins cossard et d'ouvrir
cette fenêtre de commande (qui en plus est en icone sur mon bureau)

et voilà ce que cela me raconte:

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:Documents and Settingsperso>C:clearSD.vbs
Avertissement :
Ce script doit être exécuté en tant qu'administrateur

*************************************************
Suppression des fichiers contenus dans le dossier
C:WINNTSoftwareDistribution
*************************************************

Fichier supprimé dans le dossier Datastore :
Datastore.edb

edb00230.log
res2.log
res1.log
tmp.edb
edb.chk
edb0022E.log
edb.log
edb0022F.log
Dossiers supprimés dans le dossier Download :
711f20ae9db23bff51bec1b4dc1b14ac
0b6fbbed8afe1271e8a7b4a00ff1eb2f
Fichiers supprimés dans le dossier Download :
d636b03d3557f33e6b92b51a894ee6875cf89991
c4ab72113ccf7461a7630b23f768a91ba6b46d9e
42c3892b10a01b9b38a1fc887cf5794173386eb4
71 Mo récupérés

Le service Mises à jour automatiques a redémarré correctement.

C:Documents and Settingsperso>



Bon il a visiblement supprimé quelque chose, 71 Mo qu'il dit, mais dans
C:WINNTSoftwaredistribution rien n'a changé , mais bon y en a pour
2.63 Mo, à moins que cela ait été vidé la fois précédente!!

Je vais le voir en remettant l'ancienne image, pas avant mi janvier,
pas le temps en ce moment

--
Pour m'envoyer un mail, remplacer anti par droger et manama par
wanadoo; to send me directly a mail replace anti with droger and manama
with wanadoo;

Avatar
Gilles RONSIN
Gilles RONSIN , le jeu. 10 déc. 2009
16:06:47, écrivait ceci:

Salut,

Pour ceux (j'ai l'impression quand même d'être le seul :-) )
qui auraient le même problème :


C:UsersPublicDocumentsscriptsclearSD.vbs(24, 1)
WScript.CreateObject: La classe Automation appelée
"WScript.Network" est introuvable.




La solution est de réparer Wscript.Network par la commande

regsvr32 wshom.ocx

Ensuite tout marche normalement.

--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
Avatar
Jean-Claude BELLAMY
"Gilles RONSIN" a écrit dans le message de groupe de
discussion :
Droger Jean-Paul , le jeu. 10 déc. 2009
15:02:45, écrivait ceci:

Salut JP,

je pense que tu as le même problème que moi :
pour vérifier démarre une console "[windows] cmd [ctrl]-[shift]-
[entree]"
puis> cd "le chemin du répertoire où tu as placé le script"
puis> clearSD.vbs

et là tu devrais voir le message d'erreur

C:UsersPublicDocumentsscriptsclearSD.vbs(24, 1)
WScript.CreateObject: La classe Automation appelée "WScript.Network"
est introuvable.

Il ne reste plus qu'à trouver cette classe que JCB doit avoir de base
dans toutes ses bécanes mais pas nous....



C'est quoi ce délire ????

La classe "Wscript.Network" fait partie des BASES de Wscript!
C'est installé EN MÊME TEMPS QUE LE SYSTÈME depuis Windows 2000 et Windows
98.
Elle n'a RIEN d'exotique ... :-)

Elle est définie ici :
HKCRCLSID{093FF999-1EA0-4079-9525-9614C3504B74}

En particulier la sous-clef "InProcServer32" indique le nom
du "serveur" de cette classe :
%systemroot%system32wshom.ocx

(et cela sous Win9x/ME/W2K/XP/W2K3/Vista/Win7 !!!)


Toi (ou un "alien") avez vraisemblablement trifouillé dans la BDR et/ou
%systemroot%system32 et/ou avez désenregistré/flingué le fichier
%systemroot%system32wshom.ocx

(un grand classique de WSH)

Je t'invite (mais c'est plus un ordre qu'une simple invitation!) de
réenregistrer ce contrôle par la commande :
REGSVR32 %systemroot%system32wshom.ocx


Et si tu obtiens une injurebox parce que le fichier n'existe pas, c'est
qu'il y a eu des dégâts dans l'implantation de WSH/VBS chez toi !
Donc il te faudra retélécharger l'ensemble :
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/FR/scriptfr.exe
(le lien est toujours valable, j'ai vérifié ce matin)

En fin de compte, je crois bien que mon script a eu le mérite de mettre en
évidence un problème latent sur ta babasse! ;-)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Avatar
Gilles RONSIN
"Jean-Claude BELLAMY" , le ven. 11
déc. 2009 12:35:22, écrivait ceci:

Salut JCB,

Il ne reste plus qu'à trouver cette classe que JCB doit avoir de
base dans toutes ses bécanes mais pas nous....



C'est quoi ce délire ????



Patapé ! patapé ! ;-)

La classe "Wscript.Network" fait partie des BASES de Wscript!
C'est installé EN MÊME TEMPS QUE LE SYSTÈME depuis Windows 2000 et
Windows 98.
Elle n'a RIEN d'exotique ... :-)
<snip>
Toi (ou un "alien") avez vraisemblablement trifouillé dans la BDR
et/ou
%systemroot%system32 et/ou avez désenregistré/flingué le fichier
%systemroot%system32wshom.ocx

(un grand classique de WSH)



Yep. J'ai plein de trucs bizarres qui s'accumulent... rien de
catastrophique mais 1+1+1+1+1+...... ça commence à bien faire
rogneugneu.

Je t'invite (mais c'est plus un ordre qu'une simple invitation!)
de réenregistrer ce contrôle par la commande :
REGSVR32 %systemroot%system32wshom.ocx



OUI CHEEEF ! En fait j'avais trouvé tout seul, na !


Et si tu obtiens une injurebox parce que le fichier n'existe pas,
c'est qu'il y a eu des dégâts dans l'implantation de WSH/VBS chez
toi ! Donc il te faudra retélécharger l'ensemble :
http://download.microsoft.com/download/winscript56/Install/5.6/
W98NT42KMe/FR/scriptfr.exe
(le lien est toujours valable, j'ai vérifié ce matin)



Oui mais on en est à la version 5.7, et de toute façon ça ne s'applique
pas à Vista (normalement). Et si après un carnage, il fallait
réinstaller sous Vista, on pourrait utiliser cet installeur ?

En fin de compte, je crois bien que mon script a eu le mérite de
mettre en évidence un problème latent sur ta babasse! ;-)




Toutafé. Et je t'en remercie. En prime j'ai eu le droit à 89Mo de moins
qui traine sur mon disque.

A+

--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
Avatar
lolo
Le 07/12/2009, Jean-Claude BELLAMY a supposé :
Hello World !

Il existe dans le dossier %systemroot% (C:windows par défaut) un sous
dossier "SoftwareDistribution" qui contient tous les fichiers de mises à jour
automatiques de Windows, que ce soit à l'aide de Windows Update ou d'un
serveur W SUS (en entreprise).
Ces fichiers, une fois la MAJ effectuée, ne servent plus à rien, mais par
contre au bout d'un moment occupent une place phénoménale!

Ainsi sur une machine où était installé mon serveur W2K3 cela atteignait 1,5
Go !
Sur ma machine principale sous Win7 (installé il y a seulement 2 mois 1/2) il
y en avait déjà pour 110 Mo, ...

Donc on peut récupérer beaucoup de place en supprimant les fichiers devenus
inutiles.
Mais bien sûr il ne faut pas faire n'importe quoi, et certains fichiers ne
sont pas supprimables par défaut car ils sont en cours d'utilisation par le
service WUAUSERV (Windows Update).

Les manips (préconisées par MS) sont (pour info) les suivantes, afin de vider
"proprement" ce dossier et sans "injurebox", :
================================================= > - stopper momentanément le service "Windows Update"
par la commande
net stop wuauserv
ou, si on préfère,
net stop "Windows Update"
(c'est la MÊME CHOSE, mais dans la 2ème écriture, il ne
faut pas oublier les guillemets à cause de la présence d'un espace)

- ouvrir le dossier %systemroot%SoftwareDistributionDataStore

- supprimer le contenu du sous-dossier "Logs"

- supprimer le fichier "DataStore.edb" (gros fichier!)
Cela signifie que l'HISTORIQUE des "Windows Update"
sera effacé (on peut vivre sans !!!)

- ouvrir le dossier %systemroot%SoftwareDistributionDownload
et supprimer TOUT son contenu.

- vider la corbeille si nécessaire

- redémarrer "Windows Update" par la commande
net start wuauserv
================================================= >
Ayant à effectuer cela sur une dizaine de babasses, j'ai écrit un script VBS
qui fait tout ça bien gentiment et automatiquement !

Il tourne sous W2K, XP, W2K3, Vista, Win7 !

Il suffit de la lancer depuis une fenêtre de commandes
clearSD

Il fait appel à WMI (pour l'arrêt et le démarrage de service)
Il est modifiable pour agir à distance, mais pour l'instant j'ai
volontairement désactivé cette possibilité, donc il ne fonctionne qu'en
local.

http://www.bellamyjc.org/fr/vbsdownload.html#clearSD


Bon amusement ! ;-)



Merci pour cette info JC, mon mien a moi de DD va respirer un chouya de
plus car très petit au demeurant.

laurent
Avatar
Antoine Leca
Bonjour Jean-Claude,

Encore une fois, un article très utile sur les entrailles de Windows.
Et qui suscite des améliorations sur nos propres configurations, ce qui
est encore mieux.


Jean-Claude BELLAMY écrivit :
<%systemroot%SoftwareDistribution>
Ces fichiers, une fois la MAJ effectuée, ne servent plus à rien,



Mmmm, là j'ai un léger désaccord (sur la formulation) : en dehors du
fait que l'historique peut avoir quand même un petit intérêt (surtout
sur un serveur, qui par définition ou presque a des actions qui passent
inaperçues parce qu'elles ne surviennent pas à l'écran), il y a aussi
plusieurs répertoires qui servent à l'infrastructure de WUAU, que l'on
serait bien mal avisé de supprimer... et qui ne prennent quasiment pas
de place (actuellement 300 K sur mon serveur alpha).
En fait, c'est surtout le sous-répertoire Download qui peut enfler
au-delà de toute raison, plus l'historique dans DataStore (mais là on
peut peut-être pardonner ? voir aussi ci-dessous).


Ainsi sur une machine où était installé mon serveur W2K3 cela atteignait
1,5 Go !
Sur ma machine principale sous Win7 (installé il y a seulement 2 mois
1/2) il y en avait déjà pour 110 Mo, ...



Là, je dirais que tu as un problème potentiel sur ton infrastructure.

J'avais un serveur 2003 qui avait lui aussi un dossier SoftwareDist
surdimensionné, aussi j'ai été regarder ce qu'il y avait dedans :
résultat, le SP2 était présent en entier prêt à être déployé !
Évidemment ce n'était pas normal, puisque je pensais avoir déjà appliqué
ce SP... Après avoir donc ré-appliquer le SP (ce qui est toujours
sportif sur un serveur de production), j'ai vu que le répertoire ne
maigrissait pas... au bout de quelques semaines j'ai viré le répertoire,
sans effet négatif, et j'ai commencé à regarder de plus près le
comportement (pas super documenté) de ce répertoire.
Résultat, si WUAU récupère une mise-à-jour, et qu'ensuite la mise-à-jour
est appliquée d'une autre façon (peut-être en manuel, ou poussée par les
GPO), la màj préparée par WUAU va rester pour toujours dans le
répertoire Download (et on peut sans dommage la virer).

Idem pour MRT (la recherche de « malwares ») : il faut accepter,
manuellement, l'installation de cette mise-à-jour, puisqu'elle peut
modifier sensiblement les programmes installés, et aussi que l'exécution
peut avoir un impact sur le rendement ; si on ne l'exécute pas tous les
mois, les versions antérieures s'accumulent, car elles ont un
identifiant différent ; et quand on lance enfin la dernière version, les
antérieures restent, inutiles, dans le répertoire Download...


- ouvrir le dossier %systemroot%SoftwareDistributionDataStore

- supprimer le contenu du sous-dossier "Logs"



Cela ne gagne quasiment rien : sur une machine saine et sans trafic, on
doit trouver 4 fichiers, à savoir
edb.chk 8K fichier d'index
edb.log 128K journal en cours
res1.log 128K réservation d'espace
res2.log 128K réservation d'espace
(Les deux derniers ont des noms différents avec NT6, ebdres0000?.jrs,
mais le principe est le même). Ces quatre fichiers seront immédiatement
reconstruits lorsqu'on redémarrera le service.
On peut aussi trouver des edb0XXX.log, qui sont des journaux en cours
d'enregistrement, qui seront nettoyés à la prochaine sauvegarde.

S'il y a beaucoup de fichiers ici, c'est le signe qu'il y a beaucoup de
mise-à-jour en attente... et probablement un souci à regarder du côté de
la configuration de Windows Update sur la machine... (ou un problème de
sauvegarde de la base JetBlue, peut-être que la base est abîmée).


- supprimer le fichier "DataStore.edb" (gros fichier!)



On trouve d'énormes variations à ce niveau. Pour info, 18 M sur un
serveur 2003SBS qui tourne depuis 2006, avec mise-à-jour hebdomadaire
(ne peut pas s'arrêter que le week-end). Mais 98M sur une machine 2000
avec l'historique depuis 2005. Et 138M sur un Vista qui tourne depuis
mi-2007. Ou 54M sur des Vistas qui tournent depuis avril seulement.

Personnellement je vis très bien avec un fichier de 18M dans un coin!
Pour les bécanes où cela dépasse 100M cela me préoccupe plus, mais on
dirait bien que c'est la tendance actuelle chez MS ! Et j'aurais bien
aimé savoir comment se répartiss(ai)ent les 110M sur 3 mois de ton
Seven, entre l'historique et les Download ratés ?

Sinon j'ai examiné un peu le pourquoi d'avoir une aussi grosse base
(même à 18 M) pour aussi peu d'informations utiles ! et je suis revenu
plutôt bredouille, en tous cas sur ma faim.
En regardant les statistiques de la base on voit bien que la quasi
totalité de l'espace est mangée par la table tUpdates, et en
particuliers les blobs (long values), dont le contenu sont des données
XML avec les vecteurs de mise-à-jour, très semblable pour ne pas dire
identique au contenu du fichier wsusscn2.cab. Par ailleurs la base
DataStore.edb se comprime très bien (97% avec deflate/zip), signe d'une
énorme redondance interne de l'information qu'elle contient :^).
Donc je me demande dans quelle mesure on ne pourrait pas la mettre en
mode NTFS comprimé, à vue de nez cela permet de gagner les trois-quarts
de sa taille, c'est toujours ça !


Antoine
Avatar
Ludo
Bonjour JCB,

110 Mo, ce n'est rien maintenant...
Cela ne fait que 0.00011 To...

;o)

Plus sérieusement, à noter que la suppression
de ce répertoire permet de débloquer les mises
à jour lorsque ces dernières échouent sans raison
apparente.

J'ai rencontré ce phénomène sur deux PC de collègues
sous Vista (PC qui par ailleurs n'étaient pas exempts de
tous malwares...).

Cordialement,
Ludovic
http://inforadio.free.fr
1 2