Cómo encontrar archivos y directorios grandes en Linux
Encontrar el tamaño de archivos y directorios grandes en servidores Linux es una de las tareas más importantes con las que se encuentra todo administrador de sistemas en sus tareas diarias. Por lo tanto, todo administrador del sistema debe conocer varias formas de averiguar el tamaño de los discos más grandes y los archivos que consumen los discos duros.
A veces, se vuelve más importante cuando el disco de su sistema se llena tan rápidamente y tiene que descubrir qué archivos o directorios están ingiriendo, toda el área de su disco en un Linux. En este caso, deberíamos poder encontrar una ubicación de directorio particular donde se llenan los datos. Como no existe un comando de acceso directo que esté disponible para descubrir los documentos o directorios más grandes en un sistema de archivos Linux o UNIX, existe la posibilidad de usar algunas utilidades de línea de comando que pueden ayudarnos a llegar a la ubicación de origen.
Por lo tanto, este tutorial lo ayudará a usar múltiples comandos que se pueden usar en sistemas tipo Linux o UNIX para encontrar los archivos o directorios más grandes en los sistemas de archivos.
1) Usando el comando de búsqueda
El comando ‘buscar’ es muy útil para buscar archivos en una jerarquía de directorios y para buscar archivos y directorios grandes en su sistema. Ejecutemos el siguiente comando para enumerar todos los archivos que tienen un tamaño superior a 50 MB, puede especificar el número aún mayor.
# find / -xdev -type f -size +50M
Para encontrar resultados más detallados sobre estos archivos grandes, puede extender su comando ‘buscar’ debajo de los parámetros.
# find / -xdev -type f -size +50M -exec ls -alh {} ; | sort -nk 5
Utilice el siguiente comando para encontrar los 10 archivos más grandes en un directorio particular de su sistema.
# find /usr -type f -printf "%s %pn" | sort -rn | head -n 10
114973832 /usr/share/fonts/opentype/noto/NotoSansCJK.ttc 83333096 /usr/lib/thunderbird/libxul.so 78809336 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0 71551944 /usr/lib/firefox/libxul.so 58250232 /usr/lib/libreoffice/program/libmergedlo.so 41729688 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.19.4 41587032 /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1 41294304 /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess2 37857816 /usr/lib/x86_64-linux-gnu/libQt5WebKit.so.5.5.1 35945726 /usr/local/bin/consul
2) Usando el comando ls
El ‘ls’ es un comando de shell de Linux que lista el contenido del directorio de archivos y directorios. Puede utilizar este comando de muchas formas para enumerar los archivos y carpetas. Para verificar las listas, los archivos en el directorio actual ordenados por tamaño con un tamaño más grande en la parte superior, ejecute el comando debajo.
# ls -alhS
-rw------- 1 root root 59K Apr 18 20:57 agedu.dat -rw------- 1 root root 13K Apr 20 18:27 .gt5.html -rw-r--r-- 1 root root 10K Jan 25 03:43 index.html -rw------- 1 root root 4.1K Apr 22 22:06 .bash_history drwx------ 6 root root 4.0K Apr 18 20:57 . drwxr-xr-x 24 root root 4.0K Apr 17 10:40 .. drwx------ 2 root root 4.0K Apr 20 17:03 .cache drwx------ 3 root root 4.0K Apr 12 15:38 .gnupg drwx------ 2 root root 4.0K Apr 20 18:27 .gt5-diffs drwx------ 2 root root 4.0K Apr 20 18:29 .w3m -rw-r--r-- 1 root root 3.1K Oct 22 2015 .bashrc -rw------- 1 root root 1.1K Apr 12 15:43 .viminfo -rw-r--r-- 1 root root 148 Aug 17 2015 .profile
Del mismo modo, puede usar el comando ‘ls’ para agregar con r
para mostrar de forma recursiva el tamaño de los archivos en el directorio actual o puede especificar la ruta de ese directorio en el que desea ver el tamaño de los archivos presentes allí.
# ls -lhtr
# ls -lhtr /var/log/
Para obtener una lista de los 10 archivos más grandes de forma recursiva en el directorio actual, use el siguiente comando.
# ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n10
456K initial-status.gz 356K syslog 248K dpkg.log 216K syslog.1 168K kern.log 160K kern.log.1 100K dpkg.log.2.gz 96K partman 92K syslog 84K syslog.6.gz
Para obtener más ayuda para usar el comando ‘ls’, puede usar el siguiente comando.
# ls --help
3) Usando la herramienta gt5
El ‘gt5’ es otra herramienta de línea de comandos impresionante, que se puede usar para verificar el tamaño de archivos y directorios en un sistema Linux. Pero, debe estar instalado en su sistema antes de que pueda comenzar a usarlo. Para instalar ‘gt5’ puede usar el siguiente comando en su sistema Linux.
# apt install gt5
Después de la instalación, puede usar esto para verificar el tamaño de los archivos y directorios de su sistema usando los siguientes comandos.
# gt5
# gt5 /var
Puede especificar cualquier directorio extendido por el comando ‘gt5’ para verificar los directorios y archivos de mayor tamaño. Para expandir aún más los directorios, arrastre el cursor del mouse sobre ese directorio y presione enter.
# gt5 /var/log
Cambiemos su directorio a otra ruta y ejecutemos el comando ‘gt5’ para la vista interior de los archivos y directorios superiores.
# cd /usr/src/linux-headers-4.10.0-20-generic/
#gt5
4) Usando el comando du
El comando ‘du’ abreviado como uso de disco, informa los tamaños de los árboles de directorios, incluido todo su contenido y los tamaños de los archivos individuales. Esto lo hace útil para rastrear acaparadores de espacio, es decir, directorios y archivos que consumen cantidades grandes o excesivas de espacio en una unidad de disco duro u otros medios de almacenamiento.
La sintaxis básica de ‘du’ es la que se muestra a continuación.
# du [options] [directories and/or files]
Para averiguar los archivos y directorios principales en un sistema de archivos Linux / UNIX, no hay ningún comando apropiado de du para obtener el resultado requerido, pero usándolo con otros comandos como los comandos ‘sort’, ‘head’ y ‘find’ como se muestra a continuación . Para obtener la salida en la forma más legible por humanos, puede usar el parámetro ‘-h’ con el comando ‘du’.
# du -ah /var | sort -n -r | head -n 10
1020K /var/cache/apt/archives/fonts-dejavu-core_2.37-1_all.deb 1016K /var/cache/apt/archives/udev_232-21ubuntu3_amd64.deb 1016K /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.04.1_amd64.deb 1016K /var/cache/apt/archives/colord-data_1.3.3-2_all.deb 1016K /var/cache/apt/archives/colord-data_1.3.2-1_all.deb 1004K /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.10.1_amd64.deb 1004K /var/cache/app-info/gv 1000K /var/cache/app-info/gv/en_US.gvz 996K /var/cache/apt/archives/udev_231-9ubuntu4_amd64.deb 996K /var/cache/apt/archives/netpbm_2%3a10.0-15.3build1_amd64.deb
A continuación, puede usar el siguiente comando moviéndose al directorio requerido donde desea verificar los archivos superiores como se muestra.
# cd /var/log/
# du -hsx * | sort -rh | head -10
2.9M dpkg.log.1 2.0M dist-upgrade 1.6M kern.log.1 932K installer 232K syslog.2.gz 228K tomcat8 188K syslog.1 188K auth.log.1 144K kern.log 136K apt
5) Comandos Ncdu para verificar el uso del disco
Ncdu es un analizador de uso de disco con una interfaz Ncurses. Es muy útil y fácil de usar cuando se trata de rastrear archivos y directorios que consumen espacio. Simplemente puede instalarlo usando el siguiente comando en su sistema Ubuntu o RHEL.
# apt install ncdu
# yum install ncdu
Después de la instalación, puede comenzar a usar este comando para verificar el uso del disco de su sistema.
# ncdu
Después de ejecutar este comando, comenzará a actualizar su disco y mostrará los resultados en la terminal. Utilice el siguiente comando para verificar el uso del disco de la partición raíz de su sistema.
# ncdu /
La carpeta más grande aparece en la parte superior, lo que le facilita la resolución de problemas. Puede usar su comando de ayuda para saber más sobre su uso y obtener más beneficios de esto.
6) Shell Script para encontrar los principales directorios que consumen discos
En este script de shell, veremos qué directorios superiores consumen el gran espacio en disco, de modo que podamos liberar algo de espacio durante una emergencia. Los comandos que usamos en este script son ‘du’ con diferentes claves, ‘sort’ y ‘head’.
Creemos un nuevo archivo usando su editor de línea de comandos como ‘vi’ y coloquemos el siguiente contenido como se muestra a continuación.
# vim topdir.sh
#/bin/bash #check if user input argument if [ $# -eq 0 ]; then #if no argument print next messge and exit from script echo "Usage: $0 " exit 1 fi # Save first arguments to variables CheckedDir="$1" # HeadValue=$2 #set value for variable count value 1 count=1 #just print empty line echo "" #Print next message: echo "Here is the ${HeadValue} biggest directories located in ${CheckedDir}:" echo "" #Getting list of directories and space they use. du -a --max-depth=1 --one-file-system ${CheckedDir}/ | #next we sort result sort -rn | sed "1d" | # next we get only first X directories head -"${HeadValue}" | #next print result to user while read size dirrr ; do #counting size in Mb size="$(( size / 1024 ))" #show output for user echo "N°${count} : ${dirrr} is ${size} Mb" ((count++)) done echo ""
Guarde y cierre el archivo de configuración, otorgue permisos ejecutables al archivo y luego ejecute el script para encontrar los directorios superiores bajo su ubicación definida como se muestra.
# chmod +x topdir.sh
# ./topdir.sh /var/log/
Conclusión
En este tutorial, usamos varias utilidades de línea de comando para verificar directorios grandes en discos de sistemas Linux. Con frecuencia utilizamos varias formas de acceder a esos archivos o directorios que consumen mucho espacio en el disco y tenemos que usar dichos comandos para llegar a esos archivos y directorios. En este artículo, solo cubrimos las herramientas de línea de comandos para encontrar el uso del espacio en disco, mientras que hay muchos otros analizadores web disponibles para buscar y monitorear el espacio en disco con archivos y directorios grandes.