Come identificare e gestire i file che occupano troppo spazio su disco da linea di comando

Quando lo spazio su disco inizia a ridursi, diventa importante individuare quali directory o file consumano grandi quantità di spazio di archiviazione. Disporre dei giusti comandi da riga di comando è essenziale per una manutenzione quotidiana del proprio HomeLab, permettendo di affrontare con calma ed efficienza situazioni potenzialmente critiche.

In questo articolo vedremo alcuni comandi utili per analizzare lo spazio su disco su sistemi Linux. Verranno illustrate anche alcune strategie per liberare spazio, mantenendo un livello di sicurezza medio-alto e operando in modo ragionevole. Nessuna pratica eccessivamente rischiosa verrà proposta, e suggeriremo sempre di operare con la massima cautela.


Panoramica sullo spazio su disco

Prima di tutto, è utile avere una panoramica generale dell’utilizzo delle partizioni:

1
df -h

L’opzione -h (human-readable) converte i valori in unità facilmente leggibili (KB, MB, GB). Da questo output, potrai vedere subito se una partizione è vicina al limite della sua capacità.


Identificare le directory più grandi

Quando individui una partizione critica (ad esempio /opt/NOME_DIRECTORY), puoi analizzare la struttura delle directory al suo interno:

1
du -h /opt/NOME_DIRECTORY --max-depth=1 2>/dev/null | sort -hr | head -n 10
  • du -h: mostra la dimensione delle directory in modo leggibile
  • --max-depth=1: limita la profondità dell’analisi a un solo livello
  • sort -hr: ordina i risultati dal più grande al più piccolo
  • head -n 10: mostra le prime 10 linee
  • L’opzione 2>/dev/null viene utilizzata per ignorare i messaggi di errore relativi a directory non accessibili, semplificando l’analisi dell’output. In alcuni contesti potresti ometterla, se preferisci vedere quali percorsi non possono essere letti.

Se individui una sottodirectory di grandi dimensioni, puoi approfondire ulteriormente nello stesso modo:

1
du -h /opt/NOME_DIRECTORY/GRANDE_CARTELLA_1 --max-depth=1 2>/dev/null | sort -hr | head -n 10

Queste analisi a imbuto ti consentono di scendere gradualmente fino ai singoli file più ingombranti.


Cercare file di grandi dimensioni

Se desideri individuare direttamente i file più pesanti, puoi utilizzare:

1
find / -type f -size +100M 2>/dev/null | head -n 20
  • find /: inizia la ricerca dalla radice
  • -type f: cerca solo file
  • -size +100M: limita la ricerca ai file maggiori di 100MB
  • 2>/dev/null: sopprime i messaggi di errore su directory non accessibili
  • head -n 20: mostra solo i primi 20 risultati

In questo modo otterrai una rapida lista dei maggiori responsabili del consumo di spazio.


Strumenti interattivi: ncdu

Se puoi installare nuovi tool nel tuo HomeLab, ncdu è uno strumento interattivo molto utile:

1
2
apt update
apt install ncdu

Una volta installato, puoi eseguirlo con:

1
ncdu /home/utente

ncdu fornisce un’interfaccia testuale per navigare tra le directory, visualizzarne le dimensioni e, se necessario, eliminare i file direttamente dall’interfaccia. Eccone simile esempio:

1
2
3
4
5
6
7
8
9
10
11
12
13
ncdu 1.19 ~ Use the arrow keys to navigate, press ? for help
--- /home/utente ---------------------------------------------------------------------------
120.0 MiB [########################] /progettoX
60.5 MiB [############ ] /.local
32.2 MiB [##### ] /.cache
15.0 MiB [## ] /documenti
5.0 MiB [ ] /.ssh
2.0 MiB [ ] config_backup.tar.gz
1.0 MiB [ ] notes.txt
40.0 KiB [ ] .bash_history
4.0 KiB [ ] .bashrc
4.0 KiB [ ] .profile


Altri comandi utili

  1. du -sh * nella directory corrente
    Mostra la dimensione di ogni directory e file nel percorso corrente, per una rapida panoramica.

  2. lsof +aL1 /NOME_MONTAGGIO
    A volte lo spazio è occupato da file già cancellati ma ancora aperti da qualche processo. Questo comando mostra i file aperti con link count zero, evidenziando i casi in cui è sufficiente terminare il processo per liberare spazio.

  3. df -i
    Se sospetti che non sia lo spazio ad esaurirsi, ma gli inode, df -i ti mostrerà quanti inode sono utilizzati. Gli inode sono strutture dati utilizzate per gestire informazioni sui file, come metadati, permessi e puntatori al contenuto; un eccesso di file molto piccoli può saturare il numero di inode disponibili.


Caso reale: avviso da un servizio di monitoraggio (Nagios)

Vediamo ora un esempio pratico di come questi comandi possano risultare utili, sia in un’infrastruttura aziendale complessa che in un semplice HomeLab. È una pratica diffusa configurare uno o più servizi di monitoraggio, come Nagios o Zabbix, per tenere sotto controllo lo stato delle macchine. Questi strumenti possono raccogliere dati in modi diversi:

  • Con agent: Il sistema monitorato esegue un software agente (come NRPE per Nagios o l’agente nativo di Zabbix) che invia periodicamente informazioni sullo stato delle risorse (utilizzo CPU, RAM, spazio disco, servizi attivi) al server di monitoraggio.

  • Senza agent (agentless): Il server di monitoraggio interroga direttamente i sistemi target usando protocolli standard come SNMP, WMI (per macchine Windows) o SSH. In questo caso non è necessario installare nulla sul sistema da controllare, riducendo così la complessità dell’infrastruttura.

Nel mio HomeLab, ad esempio, ho ricevuto un avviso da Nagios, che segnalava una situazione critica su un host generico (NOME_HOST). Ecco un esempio del messaggio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
***** Nagios Monitor XI Alert *****

Notification Type: PROBLEM

Service: Check linux disk usage
Host: NOME_HOST
Address: NOME_INDIRIZZO_IP
State: CRITICAL

Date/Time: NOME_DATA_ORA

Additional Info:

CRITICAL. DISK STATS: / al 90%, /opt/NOME_DIRECTORY al 100%.

Questa notifica mi ha spinto a utilizzare i comandi sopra descritti, individuando con facilità i file e le directory più ingombranti. Ciò mi ha permesso di liberare spazio in modo mirato e sicuro, riducendo l’impatto sull’ambiente e prevenendo potenziali downtime.


In conclusione, utilizzare comandi come df, du, find, o tool interattivi come ncdu, ti permette di individuare rapidamente le aree problematiche del tuo spazio su disco, mantenendo un approccio umile, controllato e sicuro nel tempo. Queste pratiche diventano fondamentali per evitare situazioni di emergenza e mantenere il tuo HomeLab ottimizzato e funzionale.