Indice

Recuperare spazio sul proprio hard disk

Qui di seguito vengono elencati alcuni procedimenti che permettono di recuperare dello spazio sul proprio hard disk su un'installazione Debian GNU/Linux.

Nota: usate tutte le indicazioni qui riportate a vostro rischio e pericolo. L'autore non si prende nessuna responsabilità se qualcosa poi non funziona più.
Attenzione: quanto qui riportato potrebbe non essere aggiornato per l'uso su un sistema recente.

Diminuire lo spazio riservato su ext2/ext3

Nelle partizioni ext2/ext3 viene di default viene riservato per root uno spazio pari al 5% dei blocchi. Questo è fatto per permettere a root di operare anche se gli utenti hanno occupato l'intero spazio libero. Quindi per ogni 100 MByte di spazio vengono riservati per root ben 5 MByte.

Per verificare se sul proprio sistema si utilizzano partizioni in ext2 o ext3 eseguire i seguenti comandi:

$ mount -t ext2
$ mount -t ext3

L'operazione ha un certo rischio perché modifica il filesystem, quindi è meglio prima effettuare un backup dei propri dati.

Inoltre è consigliato fare un backup anche dei pacchetti installati:
$ dpkg –get-selections > pacchetti_installati.txt
L'elenco viene salvato nel file pacchetti_installati.txt nella directory corrente. Questo elenco può essere utilizzato per installare gli stessi pacchetti su un nuovo sistema.

L'operazione da fare è abbastanza semplice e molto veloce, però per agire in sicurezza bisogna utilizzare una live, meglio se recente e se è una Debian o una derivata di Debian (es: knoppix: http://www.knoppix.org).

Seguire i seguenti passi:

  1. segnare tutte le partizioni ext2/ext3 su un foglio (es: /dev/hda1) 1)
  2. avviare la live
  3. aprire una shell
  4. diventare root con il comando su
    # su
  5. montare ogni partizione in lettura:
    • di solito le partizioni sono già montate, verificarlo con il comando
      # mount -t ext2
      # mount -t ext3

      otterrete una o più righe di questo tipo:
      /dev/hda1 on /mnt/disco1 type ext3 (rw,errors=remount-ro)
      /dev/hda2 on /mnt/disco2 type ext3 (ro)

      nella prima riga si vede che la partizione è montata in lettura e scrittura (rw), mentre la seconda è solo lettura (ro). Se sono tutte in sola lettura (ro), allora si può passare al punto successivo, altrimenti vanno smontate rimontate in sola lettura
    • smontare la partizione che era in lettura/scrittura
      # umount /mnt/disco1
    • montare la partizione in sola lettura
      # mount -r /mnt/disco1
  6. ora diminuire lo spazio riservato a root con uno dei seguenti comandi
    # tune2fs -m PERCENTUALE /dev/EXT_PARTIZIONE
    # tune2fs -r NUMERO_BLOCCHI /dev/EXT_PARTIZIONE

    se si hanno più partizioni si possono indicare percentuali/numero blocchi differenti. Ad esempio su una partizione di dati si può mettere 0, mentre sulla partizione di root conviene lasciare un po' di spazio (mettere 1% o un numero di blocchi adeguato).

    es:
    # tune2fs -m 1 /mnt/disco1
    # tune2fs -m 0 /mnt/disco2

Ora con df è possibile vedere lo spazio attualmente disponibile:
$ df

Rimuovere pacchetti non utilizzati

Esistono differenti programmi per intercettare e rimuovere pacchetti installati ma non utilizzati.

deborphan

È possibile individuare i pacchetti installati, ma non utilizzabili mediante il comando deborphan.

Prima di tutto assicurati di aver installato il pacchetto:

# apt-get install deborphan

Poi esegui

$ deborphan

Vengono elencati tutti i pacchetti che possono essere rimossi.

In pratica il comando cerca tutti i pacchetti che non dipendono da altri, ma che non sono programmi "finali". Questo comando può ritornare erroneamente dei pacchetti da rimuovere se:

Per ovviare a questi problemi basta aggiungere, come utente root, i pacchetti in (creare il file se non esiste): /var/lib/deborphan/keep

I pacchetti possono essere rimossi con il seguente comando

# apt-get remove --purge NOMEPACCHETTO_DA_RIMUOVERE [...]

È possibile rimuovere in automatico tutti i pacchetti orfani con il seguente comando

# apt-get remove --purge $(deborphan)

Il comando deborphan deve essere rilanciato dopo aver eliminato tutti i pacchetti indicati la prima volta perché potrebbe visualizzarne altri che dipendevano da quelli appena rimossi.

Poi è possibile passare a deborphan un parametro per ricercare più a fondo tra i pacchetti installati. Un'opzione sicura è:

$ deborphan --guess-data

È possibile anche utilizzare l'opzione che cerca tra tutti i tipi di pacchetto (però se programmate o installate programmi non in formato .deb o … questo potrebbe eliminare librerie necessarie):

$ deborphan --guess-all

Le altre opzioni invece necessitano di un controlla manuale per verificare l'effettivo non uso del pacchetto.
Per ulteriori informazioni vedere

$ man deborphan

computer-janitor

computer-janitor (computer-janitor-gtk per la versione grafica) permette di identificare e rimuovere i pacchetti che non sono usati, di intercettare file di configurazione che possono essere rimossi e di trovare configurazioni mancanti che possono migliorare le prestazioni del proprio sistema.

Il suo scopo principale è quello di controllare quello che non è stato aggiornato correttamente o che non sfrutta nuove funzionalità dovute ad un passaggio da una versione di Debian alla successiva dove i pacchetti possono essere stati configurati prima dell'introduzione di una determinata nuova funzionalità.

ATTENZIONE: non è detto che il programma rilevi sempre correttamente i pacchetti che non sono usati, controllare manualmente che sia effettivamente così.

$ man computer-janitor

Rimuovere la documentazione in altre lingue (localpurge)

localpurge rimuove tutte le documentazioni localizzate nelle lingue non selezionate. Il file viene eseguito ad ogni nuova installazione/upgrade di un pacchetto e permette di risparmiare molto spazio.

# apt-get install localepurge

Durante l'installazione verrà chiesto quali lingue tenere … selezionare l'italiano e le altre lingue che si vogliono (l'inglese viene già installato e non rimosso di default perché è sempre la lingua base dei pacchetti di documentazione).

Rimozione dei pacchetti .deb installati

Di default tutti i pacchetti installati vengono conservati nel sistema sotto forma di archivi .deb. Questo a lungo andare occupa tantissimo spazio che è possibile recuperare con il seguente comando:

# apt-get clean

Ottimizzare lo spazio usato dai log

Installare logrotate e configurarlo per comprimere e ruotare i log quando superano una certa dimensione

# apt-get install logrotate

Rimuovere i pacchetti "transizionali"

Alle volte alcuni pacchetti sono introdotti per semplificare un aggiornamento del sistema o sono sostituiti da altri e rimangono i vecchi pacchetti svuotati del loro contenuto. Questi pacchetti possono essere rimossi una volta terminato l'aggiornamento di tutti i pacchetti che da essi dipendono.

Per rintracciarli:

$ dpkg -l | grep -i transition

Una volta evidenziati è consigliabile controllare con apt-cache che la loro rimozione non causi problemi:

$ apt-cache show NOMEPACCHETTO

Inoltre per essere sicuri assicurarsi che l'operazione di remove elimina solo quel pacchetto e nessun altro (questo vuol dire che la transizione è completata e il pacchetto può essere rimosso senza problemi):

$ apt-get remove --purge NOMEPACCHETTO

Visualizzare i pacchetti non presenti nei repository

Pacchetti installati manualmente o non più disponibili nell'archivio, qui si possono trovare programmi che si vogliono rimuovere.

Installa il pacchetto:

# apt-get install apt-show-versions

Controlla quali sono i pacchetti che non sono presenti negli archivi Debian:

$ apt-show-versions | grep 'No available version in archive'

Tra questi vedere se ce n'è qualcuno che si vuole rimuovere.

Sorgenti

Guardare nella directory

/usr/src

Se si fanno compilazioni (es Linux) qui si trovano molte cose che possono magari essere rimosse.

apt-build

Se si utilizza apt-build, allora può esserci molta roba che può essere eliminata

se si voule eliminare tutto:

# apt-build clean-build
# apt-build clean-sources
# apt-build clean-repository

File di configurazione di pacchetti rimossi

Quando viene rimosso un pacchetto in automatico o manualmente senza l'opzione –purge si ha che le configurazioni di tali pacchetti restano nel sistema. È possibile eliminarle per recuperare spazio.

Prima visualizzare se c'è qualcosa da rimuovere:

$ dpkg -l | grep ^rc

e poi cancellare

# dpkg -P $(COLUMNS=200 dpkg -l | grep ^rc | awk '{print $2}')

Lo stesso risultato si può ottenere utilizzando aptitude:
Per cercare:

$ aptitude search ~c

Per rimuovere:

# aptitude purge ~c

Casella di posta

Elimina ciò che non serve più, svuotare il cestino e compattare le mail-box

Browser WEB

Svuotare la cache, cookye, salvataggio form, history, … Attenzione che questa operazione potrebbe far perdere cose che interessano (es: salvataggio password o preferenze).

Linux

Rimuovi le versioni di Linux che non si usano più (tenerne sempre un paio per sicurezza).

Prima visualizzare tutte le versioni installate

$ dpkg -l | grep " linux-"

Qui vengono elencata tutte le versioni di Linux presenti a sistema, è possibile eliminare tutte quelle più vecchie.
Attenzione: di norma è consigliabile avere installato almeno due versioni (se si aggiorna l'ultima e per qualche motivo non funziona all'avvio si ha sempre una precedente da utilizzare per sistemare i problemi).

Log

È possibile recuperare un po' di spazio agendo sui log:

  1. controllare che non siano rimasti log di versioni precedenti di programmi.
    Per esempio PostgreSQL salva i log in /var/log/postgresql/ e nei nomi dei log mette anche la versione di PostgreSQL e quindi ad ogni upgrade lascia i log della versione precedente che possono essere eliminati
  2. controllare le impostazione di logrotate nei file /etc/logrotate.conf e /etc/logrotate.d/* diminuendo, dove è possibile e consigliabile, il numero di rotazioni (es: su apache/apache2 ci sono 52 rotazioni, se il server WEB è usato solo localmente per sviluppo si possono impostare a 3-5)

/etc

In /etc molte volte le vecchie configurazioni vengono salvate mettendo un "old" finale. Questi, di solito, sono piccoli file, ma in ogni caso se non servono più si possono eliminare.

Per trovarli # find /etc -name '*old'

Nota: non è detto che tutto quello ritornato dal comando qui sopra si possa cancellare, controllare che esista anche un file senza l'"old"

Nota: non è detto che tutti i file di backup abbiano estensione old (per esempio alcuni vengono ricopiati mettendo come estensione la data attuale più un numero

metapacchetti

In alcuni casi vengono installati dei matapacchetti: pacchetti che di per se non installano nulla se non altri pacchetti. I metapacchetti alle volte permettono di installare, oltre ai pacchetti necessari per il funzionamento della propria macchina, anche quelli necessari per altre architetture hardware o altri tipi di configurazione. È possibile rimuovere questi metapacchetti e tutti i pacchetti installati da questi che non servono per il funzionamento del proprio GNU/Linux.

Per individuare i metapacchetti:

$ dpkg -l | grep metapackage

o in alternativa

$ debtags search role::dummy

Però questa istruzione può non essere sufficiente … può essere che non avete installato un dato metapacchetto, ma invece sono installati i pacchetti sottostanti che a voi non servono. Quest'altro comando dovrebbe riportare più risultati:

$ apt-cache search metapackage | grep -i metapackage

o in alternativa

$ debtags search role::dummy | cut -d "\ " -f 1 | dpkg -l | grep ^ii

Qui poi bisogna procedere per gradi per capire cosa si può rimuovere.
Supponiamo che si è individuato il metapacchetto: xserver-xorg-input-all
Individuiamo quali sono i pacchetti che ha installato:

$ apt-cache show xserver-xorg-input-all
[...]
Depends: xserver-xorg-input-evdev, xserver-xorg-input-kbd, xserver-xorg-input-mouse, 
         xserver-xorg-input-synaptics, xserver-xorg-input-wacom
[...]

bisogna ora capire quali sono i pacchetti che non servono.
Per fare questo si può sempre usare 'apt-cache show' e si scopre che:

Nota: qui si prende per scontato che non verranno usati più mouse/tastiere e non si possiede un tablet wacom

Quindi, normalmente, per un PC desktop si possono eliminare questi pacchetti:

# apt-get remove --purge xserver-xorg-input-evdev xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-input-all

mentre per un portatile:

# apt-get remove --purge xserver-xorg-input-evdev xserver-xorg-input-wacom xserver-xorg-input-all

Quindi si può eliminare il metapacchetto più tutti i pacchetti che forniscono funzionalità/driver non necessarie per il nostro sistema.
Questo comporterà un risparmio di banda quando si aggiornerà il proprio sistema (non dovranno essere aggiornati anche i pacchetti eliminati) e più spazio libero su hard disk.

Nota: l'eliminazione di un metapacchetto può avere però anche dei punti negativi. Per esempio senza il metapacchetto non vengono ad esempio caricati in automatico i pacchetti per driver di nuove periferiche che magari possederemo …

Controllare quali sono le cose che occupano più spazio

Attenzione: questa operazione può richiedere anche molto tempo.
Una volta visti i risultati poi bisogna procedere a mano per identificare quale pacchetto contiene la cosa che si vuole rimuovere.

# du -m / 2> /dev/null | sort -rn | head

Cercare file temporanei, non usati, file duplicati, ... con fslint

Utilizzare il programma con cautela perché non è detto che tutto quello indicato può essere cancellato: per esempio file con lo stesso nome in posizioni diverse potrebbero essere necessari ed in realtà contenere cose differenti.

Per installarlo:

# apt-get install fslint

Per utilizzarlo:

$ fslint-gui &

Un prodotto analogo, ma attualmente non disponibile in Debian Lenny, è kleansweep:

Cerca quello che non dovrebbe essere installato con cruft

cruft permette di verificare cosa c'è installato, ma che in teoria non dovrebbe esserci e viceversa. In ogni caso i risultati vanno analizzati attentamente prima di procedere. Attenzione: l'esecuzione di questo programma può richiedere molto tempo

# apt-get install cruft
$ man cruft

Selezionare i pacchetti che si vogliono avere installati

Grazie a debfoster è possibile selezionare i pacchetti che si vogliono avere installati sulla propria Debian. Questo permette di eliminare facilmente tutti gli altri pacchetti, soprattutto librerie, che non sono più utilizzate da nessun programma.

# apt-get install debfoster

Utilizzare il locale ISO-8859-15 al posto di UTF-8

UTF-8 utilizza da 1 a 4 byte per rappresentare un carattere (per le lingue latine ne usa 2 solo per i caratteri superiori al 128° della codifica ASCII), mentre ISO-8859-15 o ISO-8859-1 utilizzano solo un carattere.
L'uso di ISO-8859-15 può far così risparmiare un byte per ogni parola accentata scritta in puro testo.

Per visualizzare il locale utilizzato:

$ locale -a | grep "it_IT\."

verrà visualizzata una o più righe; quello che sta più in alto è quello di default

Per effettuare tale cambio bisogna:

# dpkg-reconfigure locale

A questo punto se si hanno documenti in UTF-8 o altri locale si possono convertire in ISO-8859-15 con il comando iconv:

$ iconv -f UTF-8 -t iso-8859-15 MIO_FILE_IN_UTF8 > MIO_FILE_IN_ISO-8859-15

Per modificare invece i nomi di file si può usare il comando convmv presente nel pacchetto convmv

Cancellare i file in /var/tmp

La directory /var/tmp è utilizzata dal sistema come directory temporanea; tale directory è persistente e quindi non viene cancellata automaticamente come /tmp. Se il proprio sistema è stato installato molti anni fa, allora in tale directory potrebbero esserci molti file non più utilizzati. È consigliato cancellare soltanto i file più vecchi di un tot e almeno dell'ultimo riavvio

Argomenti di approfondimento

1) normalmente questa è una operazione che non serve perché la live già carica tutte le partizioni che trova sull'hard disk

Navigazione rapida: Home - Dizionari - Thesaurus - Estensioni - News - FAQ - Mappa - Software
GPL3 License AGPL3 License
SourceForge.net Logo