Trovare tutti i file di grandi dimensioni nel filesystem di root


124

Ho un server Linux, che attualmente ha un utilizzo al di sotto dello spazio:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Come potete vedere. /è al 78%. Voglio verificare quali file o cartelle occupano spazio.

Ho provato questo:

find . -type d -size +100M

Che mostra il risultato in questo modo:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Ora questo è il mio problema. Voglio solo il nome di quei file che si trovano in cartelle che occupano spazio in /e non in /u01o /home. Poiché /è la base di tutto, mi sta mostrando tutti i file del mio server.

È possibile ottenere file di grandi dimensioni che contribuiscono al 78% di /?


3
Vedi il -xdevpredicato find. Vedi anche du -kx / | xdu(o xdiskusage).
Stéphane Chazelas,


1
rilevantefind . -type f -print | xargs du -sk | sort -rn
user13107

Risposte:


217

Provare:

find / -xdev -type f -size +100M

Elenca tutti i file con dimensioni superiori a 100M.

Se vuoi sapere sulla directory, puoi provare ncdu.

Se non stai eseguendo Linux, potrebbe essere necessario utilizzare -size +204800o -size +104857600c, poiché il Msuffisso per indicare i megabyte non è in POSIX.

find / -xdev -type f -size +102400000c

1
-xdevimpedisce solo che find passi attraverso i filesystem, quindi cercherai solo la tua unità fisica corrente. Se non è quello che vuoi, basta rimuovere l' -xdevarg.
Piani cottura

49

Oltre alla risposta di @Gnouc, puoi anche aggiungere ls -laper ottenere maggiori dettagli. Dovresti sudo privilegesfarlo.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Per vedere solo i file presenti nel gigbyte, eseguire:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

Il seguente comando non solo ti trova i primi 50 file più grandi (> 100 M) sul tuo filesystem, ma anche ordina (GNU sort) in base al più grande:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Non discendere directory su altri filesystem.

Su BSD finduso -xche è equivalente alla obsoleto -xdevprimario.

Per tutti i file e le directory, è ancora più semplice:

du -ahx / | sort -rh | head -20

(la -xbandiera è ciò che è necessario per vincolare duun singolo filesystem)

Se non stai usando GNU sort(da coreutils), usalo senza -h:

du -ax / | sort -rn | head -20

Solo per la directory attualmente (per risultati più rapidi), sostituire /con ..


1
Vorrei menzionare che questo metodo è buono perché -hmostra un output leggibile dall'uomo e aggiunge un output di esempio.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Ottima soluzione Grazie.
Tigin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.