May 18, 2009

Come scoprire quale cartella occupa troppo spazio

Come possiamo sapere come e' distribuito lo spazio sul disco del nostro "amato" server Windows??

Il SO di Redmond non ci viene incontro in questo ingrato compito e infatti non troviamo nessun comando che ci possa dare un'indicazione al volo di quale cartella occupa di piu'. Possiamo al piu' avere un riscontro su spazio occupato e spazio libero su una unita', ma come fare per avere una lista di cartelle in base alla loro occupazione?

Utilizzando una macchina Linux (in particolare Ubuntu 9.04 nei prossimi esempi)!
Come prima cosa montiamo il disco del server in una directory del nostro client:

esoso@UBW099015D:~/backups$ sudo mount -t smbfs //SERVERNAME/c$/ source/ -o user=DOMAIN/USERNAME,uid=1000,gid=1000

A questo punto il disco C: del server e' montato nella cartella locale source/ e possiamo trattarla come tale.

Il comando che andremo ad usare e' du (man du): ci restituisce come output una lista di tutti i files e le directory contenute nella dir corrente


esoso@UBW099015D:~/backups/source$ du

132 ./WINDOWS/WinSxS/x86_Microsoft.Windows.Networking.RtcRes_6595b64144ccf1df_5.2.2.1830_en_920EB233
356 ./WINDOWS/WinSxS/x86_Microsoft.Windows.WinHTTP_6595b64144ccf1df_5.1.3790.1830_x-ww_74150EFB
356 ./WINDOWS/WinSxS/x86_Microsoft.Windows.WinHTTP_6595b64144ccf1df_5.1.3790.3262_x-ww_CE315432
21246 ./WINDOWS/WinSxS
4019928 ./WINDOWS
0 ./wmpub/wmiislog
0 ./wmpub
5443042 .

L'output di du e' molto semplice: due colonne, la prima indica lo spazio occupato (in Kb) e la seconda il percorso completo del file o della cartella analizzata.

Cosi' facendo pero' il comando sbrodola una lista interminabile e difficilmente analizzabile; possiamo pero' utilizzare un flag molto comodo --max-depth=1; a questo punto l'output diventera' un po piu' leggibile perche' il comando non discendera' nelle directory di livello superiore al valore del flag (1 in questo caso):


esoso@UBW099015D:~/backups/source$ du --max-depth=1
0 ./Config.Msi
428498 ./Documents and Settings
25087 ./IBMTOOLS
783484 ./Program Files
1 ./RECYCLER
20 ./System Volume Information
126980 ./TEMP
4019928 ./WINDOWS
0 ./wmpub
5444698 .

Ci siamo quasi!! Pero' sarebbe molto comodo avere un ordinamento dell'output basato sulla dimensione delle cartelle e non in base al loro nome; ci dobbiamo affidare al pipe e al comando sort per questo:


esoso@UBW099015D:~/backups/source$ du --max-depth=1 | sort -n -r
5448898 .
4019932 ./WINDOWS
783484 ./Program Files
428498 ./Documents and Settings
126980 ./TEMP
25087 ./IBMTOOLS
20 ./System Volume Information
1 ./RECYCLER
0 ./wmpub
0 ./Config.Msi

Sort rielabora l'output di du e ce lo presenta allo stesso modo pero' ordinato per dimensione (-n numeric sort) e dal piu invadente al meno esoso.
Con una riga di comando possiamo quindi avere sotto controllo ogni singola cartella del server che dobbiamo ripulire, quindi sotto con le pulizie di Pasqua!!!!

Click Here!