Introduzione
Con il passare del tempo l'unità disco potrebbe finire lo spazio disponibile a causa di molti file non necessari che occupano grandi quantità di spazio su disco. Di solito, i sistemi Linux esauriscono lo spazio su disco a causa di file di log o di backup di grandi dimensioni.
Questo tutorial spiega come trovare i file e le directory più grandi nei sistemi Linux usando i comandi find e du.
Trovare file di grandi dimensioni utilizzando il comando find
Il comando find è uno degli strumenti più potenti degli amministratori di sistema di Linux. Permette di cercare file e directory in base a diversi criteri tra cui la dimensione del file.
Ad esempio, se si desidera cercare file con dimensioni superiori a 100 MB, nella directory di lavoro corrente si utilizzerà il comando seguente:
sudo find . -xdev -type f -size +100M
Sostituisci . con il percorso della directory in cui desideri cercare i file più grandi
L'output mostrerà un elenco di file senza ulteriori informazioni.
/var/lib/libvirt/images/archlinux.img
/var/lib/libvirt/images/slackware.img
Il comando find può anche essere utilizzato in combinazione con altri strumenti come ls o sort per eseguire operazioni su tali file.
Nell'esempio seguente, utilizziamo il comando ls insieme al comando find così da stampare una lista di tutti file con le rispettive dimensioni e ordiniamo la lista in base alla quinta colonna che è la dimensione del file utilizzando il comando sort.
find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r
L'output sarà simile al seguente:
-rw------- 1 root root 40967M Sep 6 11:42 /var/lib/libvirt/images/archlinux.img
-rw------- 1 root root 3725M Sep 6 13:19 /var/lib/libvirt/images//slackware.img
Analizziamo il comando:
- find . -xdev -type f -size +100M -print Cerca solo i file ( -type f ) nella directory di lavoro corrente (.), maggiore di 100 MB ( -size +100M ), non discendere le directory su altri filesystem ( -xdev ) e stampare il nome completo del file sullo standard output, seguito da una nuova riga ( -print ) .
- xargs ls -lh L'output del comando find viene inviato al xargs che esegue il comando ls -lh e verrà stampato l'output in un formato leggibile.
- sort -k5,5 -h -r Ordina le righe in base alla quinta colonna ( -k5,5), confronta i valori in un formato leggibile dall'uomo ( -h ) e inverti il risultato ( -r ).
- head Stampa solo le prime 10 righe dell'output convogliato.
Il comando find viene fornito con molte opzioni potenti. Ad esempio, è possibile cercare file di grandi dimensioni più vecchi di x giorni, file di grandi dimensioni con un'estensione specifica o file di grandi dimensioni che appartengono a un determinato utente.
Trovare file e directory di grandi dimensioni utilizzando il comando du
Il comando du viene utilizzato per stimare l'utilizzo dello spazio dei file ed è particolarmente utile per trovare directory e file che consumano grandi quantità di spazio su disco.
Il seguente comando stamperà i file e le directory più grandi:
du -ahx . | sort -rh | head -5
La prima colonna include la dimensione del file e la seconda il nome del file:
55G .
24G ./.random.d/linux
24G ./.random.d
13G ./Articoli
5.2G ./.news
Spiegazione del comando:
- du -ahx . Stima l'utilizzo dello spazio su disco nella directory di lavoro corrente ( . ), conta sia i file che le directory ( a ), stampa le dimensioni in un formato leggibile dall'uomo ( h ) e salta le directory su diversi file system ( x ).
- sort -rh ordina le righe confrontando i valori in un formato leggibile ( -h ) e invertendo il risultato ( -r ).
- head -5 stampa solo le prime 5 righe dell'output convogliato.
Il comando du include altre opzioni che è possibile utilizzare per perfezionare il risultato.
Conclusione
Trovare file di grandi dimensioni è molto utile quando il disco è pieno e si desidera liberarlo.