Encontrar todos los archivos grandes en el sistema de archivos raíz

124

Tengo un servidor Linux, que actualmente tiene un uso inferior al espacio:

/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

Como puedes ver. /está al 78%. Quiero verificar qué archivos o carpetas consumen espacio.

Intenté esto:

find . -type d -size +100M

Lo que muestra un resultado como este:

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

Ahora este es mi problema. Solo quiero el nombre de esos archivos ubicados en carpetas que consumen espacio en /y no en /u01o /home. Como /es la base de todo, me muestra cada archivo de mi servidor.

¿Es posible obtener archivos grandes que contribuyen al 78% de /?

Abhishek dot py
fuente
3
Ver el -xdevpredicado find. Ver también du -kx / | xdu(o xdiskusage).
Stéphane Chazelas
1
relevantefind . -type f -print | xargs du -sk | sort -rn
usuario13107
Relacionado: stackoverflow.com/questions/12522269/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

217

Tratar:

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

Enumera todos los archivos que tienen un tamaño mayor a 100M.

Si quieres saber sobre el directorio, puedes intentarlo ncdu.

Si no está ejecutando Linux, es posible que necesite usar -size +204800o -size +104857600c, ya que el Msufijo que significa megabytes no está en POSIX.

find / -xdev -type f -size +102400000c
Cuonglm
fuente
1
-xdevsolo evita que la búsqueda pase por los sistemas de archivos, por lo que solo buscará en su unidad física actual. Si eso no es lo que quieres, simplemente elimina el -xdevargumento.
placas el
49

Además de la respuesta @Gnouc, también puede agregar ls -lapara obtener más detalles. Deberías tener sudo privilegesque hacer eso.

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

Para ver solo los archivos que están en el gigbyte, haga lo siguiente:

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
zee
fuente
44

El siguiente comando no solo encuentra los 50 archivos más grandes (> 100M) en su sistema de archivos, sino que también los ordena (GNU sort) por los más grandes:

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

-xdev No descienda directorios en otros sistemas de archivos.

En el finduso de BSD, -xque es equivalente al -xdevprimario en desuso .

Para todos los archivos y directorios, es aún más fácil:

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

(el -xindicador es lo que se requiere para restringir dua un solo sistema de archivos)

Si no está utilizando GNU sort(from coreutils), úselo sin -h:

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

Solo para el directorio actual (para obtener resultados más rápidos), reemplace /con ..

kenorb
fuente
1
Mencionaría que este método es bueno porque -hmuestra resultados legibles por humanos y agregaría un resultado de muestra.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Muy buena solucion. Gracias.
Tigin