Sysadmin

Linux: Liberare Spazio Disco con 12 Comandi (Guida SysAdmin 2026)

Linux: Liberare Spazio Disco con 12 Comandi (Guida SysAdmin 2026)

L’incubo di ogni SysAdmin: un server Linux che improvvisamente esaurisce lo spazio su disco. Questo scenario non è solo un fastidio, ma una vera e propria minaccia alla stabilità e alla disponibilità dei servizi. Ho visto troppe volte infrastrutture critiche bloccarsi a causa di un banale No space left on device che impedisce aggiornamenti, blocca backup o, nel peggiore dei casi, manda in crash applicazioni vitali. La gestione proattiva dello spazio disco è una competenza fondamentale, non un lusso.

Questo articolo ti guiderà attraverso 12 comandi essenziali e tecniche pratiche per identificare, analizzare e liberare spazio disco Linux, trasformando un potenziale disastro in una routine di manutenzione efficiente. Parleremo di strumenti diagnostici, pulizia dei pacchetti, gestione dei log e automazione, fornendoti un arsenale completo per affrontare il problema alla radice.

Prerequisiti / Ambiente di test

Per seguire questa guida, avrai bisogno di un accesso SSH a un sistema Linux (Ubuntu, CentOS, Debian o derivate) con privilegi di sudo. Tutti i comandi sono stati testati su Ubuntu Server 22.04 e CentOS Stream 9. Assicurati di avere un backup dei dati importanti prima di procedere con operazioni di eliminazione, specialmente in ambienti di produzione. La keyword principale, liberare spazio disco Linux, sarà il nostro faro in ogni sezione.

Visualizzare lo spazio disponibile con df

Il primo passo per affrontare un problema di spazio è capire dove risiede. Il comando df (disk free) è il tuo punto di partenza. Utilizzato con l’opzione -h (human-readable), mostra lo spazio su disco in un formato più leggibile (GB, MB).

df -h

Questo output ti darà una panoramica immediata dell’utilizzo del disco per ciascun filesystem montato. Cerca le percentuali di utilizzo (Use%) che si avvicinano al 100% per identificare i filesystem problematici.

Trovare le directory che occupano più spazio con du

Una volta identificato un filesystem saturo, il passo successivo è individuare quali directory stanno consumando più spazio. du (disk usage) è lo strumento ideale per questo. Iniziando dalla radice del filesystem problematico, puoi risalire la gerarchia.

du -sh /* 2>/dev/null | sort -rh | head -20

Questo comando elenca le 20 directory più grandi a partire dalla radice (/), ordinandole per dimensione decrescente. L’opzione 2>/dev/null sopprime gli errori di permessi, rendendo l’output più pulito. Ripeti questo processo navigando nelle directory più grandi (cd /percorso/directory) fino a individuare la fonte del consumo di spazio.

I 10 file più grandi del sistema

Spesso, il problema non sono intere directory, ma pochi file singoli di dimensioni gigantesche. Questi possono essere log non ruotati, dump di database dimenticati o immagini ISO scaricate e mai rimosse. Il comando find è estremamente potente per questo tipo di ricerca.

find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null

Questo comando cerca tutti i file (-type f) con una dimensione superiore a 100 MB (-size +100M) sull’intero filesystem (/) e ne mostra i dettagli con ls -lh. Adatta la dimensione (+100M) alle tue esigenze. [Leggi anche: Hardening SSH su Linux: 10 Impostazioni Essenziali]

Trovare file più vecchi di N giorni

I file temporanei, i log obsoleti o i backup di vecchia data possono accumularsi in modo significativo. find può aiutarti a identificare e persino eliminare file basandosi sulla loro data di ultima modifica o accesso.

find /var/log -name '*.log' -mtime +30 -delete

Questo comando cerca tutti i file .log nella directory /var/log che sono stati modificati più di 30 giorni fa (-mtime +30) e li elimina (-delete). Usa find /tmp -type f -atime +7 -delete per eliminare file temporanei più vecchi di 7 giorni dalla directory /tmp. Fai molta attenzione con l’opzione -delete e testala sempre prima su un piccolo set di file.

Pulire i pacchetti non necessari (apt/yum)

I gestori di pacchetti come apt (Debian/Ubuntu) o yum/dnf (CentOS/RHEL) tendono ad accumulare pacchetti non più necessari o cache di download. Pulire questi residui può liberare spazio disco Linux prezioso.

Su sistemi basati su Debian/Ubuntu:

sudo apt autoremove && sudo apt clean

autoremove rimuove le dipendenze installate automaticamente che non sono più richieste da nessun pacchetto. clean svuota la cache dei pacchetti scaricati (/var/cache/apt/archives).

Su sistemi basati su CentOS/RHEL:

sudo yum autoremove && sudo yum clean all
# O per DNF:
sudo dnf autoremove && sudo dnf clean all

Svuotare la cache di apt

Come menzionato, apt clean è fondamentale. Se non l’hai eseguito, la cache di APT può crescere a dismisura. Questo comando è sicuro e non influisce sui pacchetti installati.

sudo apt clean

Eliminare i log vecchi con journalctl

systemd-journald gestisce i log di sistema in Linux. Se non configurato correttamente, il journal può occupare gigabyte di spazio. Puoi gestirlo con journalctl.

Per limitare i log a un certo periodo di tempo (es. 7 giorni):

sudo journalctl --vacuum-time=7d

Per limitare i log a una dimensione massima (es. 500 MB):

sudo journalctl --vacuum-size=500M

Questi comandi rimuoveranno i log più vecchi o ridurranno la dimensione complessiva del journal, aiutandoti a liberare spazio disco Linux nella partizione /var/log.

Trovare file duplicati con fdupes

I file duplicati sono un’altra causa comune di spreco di spazio. Strumenti come fdupes possono identificarli e, opzionalmente, rimuoverli. Devi installarlo, ad esempio con sudo apt install fdupes.

fdupes -r /percorso/da/scansionare

L’opzione -r scandisce ricorsivamente le directory. fdupes ti presenterà un elenco di file duplicati e ti chiederà quale mantenere. Fai molta attenzione quando usi questo strumento, specialmente in directory di sistema.

Comprimere log con gzip

Invece di eliminare i log, a volte è sufficiente comprimerli per risparmiare spazio, mantenendoli disponibili per l’analisi futura. gzip è lo strumento standard per questo.

gzip /var/log/vecchio.log

Questo creerà /var/log/vecchio.log.gz, riducendo drasticamente le dimensioni del file originale. Per decomprimerlo in seguito, usa gunzip /var/log/vecchio.log.gz.

Pulire le immagini Docker inutilizzate

Se utilizzi Docker, le immagini, i container e i volumi non più in uso possono accumularsi rapidamente, occupando gigabyte. Docker offre un comando di pulizia potente.

docker system prune -a

Questo comando rimuove tutti i container fermi, le reti non utilizzate, le immagini pendenti e, con l’opzione -a, anche tutte le immagini non associate a un container. È estremamente efficace per liberare spazio disco Linux in ambienti Docker. Per maggiori dettagli, consulta la documentazione ufficiale di Docker Prune.

Automazione: script di pulizia settimanale

La manutenzione manuale è soggetta a errori e dimenticanze. Automatizzare la pulizia dello spazio disco è la soluzione migliore. Puoi creare uno script bash e programmarlo con cron.

Crea un file /etc/cron.weekly/cleanup_disk.sh (o cron.daily per una pulizia più frequente) con il seguente contenuto:

#!/bin/bash

# Pulizia pacchetti APT
sudo apt autoremove -y
sudo apt clean

# Pulizia cache thumbnail
rm -rf ~/.cache/thumbnails/*

# Pulizia log journald (es. 30 giorni)
sudo journalctl --vacuum-time=30d

# Pulizia /tmp (file più vecchi di 7 giorni)
find /tmp -type f -atime +7 -delete

# Pulizia Docker (se usato)
docker system prune -af

logger "Pulizia disco completata su $(hostname)"

Rendi lo script eseguibile (sudo chmod +x /etc/cron.weekly/cleanup_disk.sh) e cron lo eseguirà automaticamente. Personalizza i percorsi e i tempi in base alle tue esigenze. Ricorda che automatizzare la pulizia richiede un’attenta pianificazione per evitare la cancellazione di dati essenziali.

Errori comuni e troubleshooting

  • Cancellare file di sistema essenziali: L’errore più grave. Non eliminare mai file o directory se non sei assolutamente certo della loro funzione. In caso di dubbio, sposta i file in una directory temporanea e cancellali solo dopo aver verificato che il sistema funzioni correttamente.
  • Ignorare i permessi: Molti comandi di pulizia richiedono privilegi di sudo. Se un comando non funziona, verifica di avere i permessi necessari.
  • Dimenticare i volumi esterni: Se hai dischi esterni o NFS montati, df li includerà. Concentra la pulizia sul disco locale problematico.
  • Log non ruotati: Se i log continuano a crescere, verifica la configurazione di logrotate o systemd-journald per assicurarti che i log vengano compressi e rimossi regolarmente.

Conclusioni con takeaway operativi

Liberare spazio disco Linux è un’attività di manutenzione critica che non può essere ignorata. Non si tratta solo di reagire a un’emergenza, ma di implementare una strategia proattiva. Ecco i takeaway operativi:

  1. Monitora costantemente: Usa strumenti di monitoraggio (come Prometheus/Grafana o Nagios) per tenere d’occhio l’utilizzo del disco e ricevere avvisi prima che si verifichi un problema.
  2. Automatizza la pulizia: Sfrutta cron per automatizzare la rimozione di file temporanei, log obsoleti e pacchetti non necessari. Questo riduce il carico di lavoro manuale e previene accumuli indesiderati.
  3. Comprendi la struttura dei dati: Prima di eliminare, usa du e find per capire esattamente cosa sta occupando spazio e perché. Una conoscenza approfondita ti eviterà errori costosi.
  4. Verifica le configurazioni: Assicurati che logrotate e le configurazioni di systemd-journald siano ottimizzate per il tuo carico di lavoro, per prevenire la crescita incontrollata dei log.

Adottando queste pratiche, potrai mantenere i tuoi server Linux snelli, efficienti e al riparo da spiacevoli sorprese dovute alla mancanza di spazio su disco.

Condividi questo articolo:

Scritto da

Rosario Giordano

Rosario Giordano è System Administrator e consulente IT specializzato in cybersecurity e cloud, con oltre 20 anni di esperienza nella gestione di infrastrutture Linux enterprise. Le sue aree di competenza includono hardening di SSH, piattaforme Kubernetes, database PostgreSQL, ambient i virtualizzati VMware e Proxmox, nonché la conformità ai framework di sicurezza NIS2 e ISO 27001.