Herramientas

Como analizar el espacio en disco en Linux con el comando du

El espacio en disco es uno de los recursos más críticos en cualquier sistema. Ya sea que administres servidores en producción, sistemas de escritorio o entornos de desarrollo, conocer cuánta información está almacenada en cada directorio te ayudará a anticiparte a los problemas causados por un espacio insuficiente, a mantener el sistema en un nivel de rendimiento óptimo y a tener un control más preciso sobre los archivos y carpetas que ocupan más espacio.

En esta entrada se mostrará como analizar el espacio en disco en Linux con du (disk usage), explicando su uso en profundidad: desde el uso básico hasta combinaciones avanzadas con herramientas como sort, head, y grep. También exploraremos algunos escenarios comunes, buenas prácticas y cómo automatizar algunas de estas tareas.

¿Qué es el comando du?

El comando du (disk usage) está diseñado para estimar y mostrar el uso del espacio en disco, tanto de archivos como de directorios. Forma parte del conjunto de herramientas básicas incluidas en casi todas las distribuciones GNU/Linux y sistemas UNIX, por lo que no es necesario instalar ningún paquete adicional para utilizarlo. Su formato básico es el siguiente:

du [opciones] [ruta]

Si lo ejecutas sin opciones y sin indicar una ruta, el comando calculará recursivamente el tamaño de todos los subdirectorios en la ubicación actual, lo que probablemente genere una salida extremadamente extensa y difícil de manejar.

Para entenderlo mejor, conviene revisar sus opciones más útiles y cómo limitar su comportamiento antes de usar el comando.

Ver el tamaño de carpetas a primer nivel

Una de las primeras tareas que se pueden realizar con el comando du es verificar cuánto espacio ocupa una carpeta específica. Para ello, no siempre es necesario mostrar el detalle completo de todos los subdirectorios anidados.

Podemos limitar la profundidad con la opción --max-depth. Si se indica un valor de 1, solamente se mostrará el tamaño de la ruta especificada y sus subdirectorios directos. Por ejemplo, para conocer cuánto espacio ocupa cada carpeta dentro de una ruta dada, se puede usar el siguiente comando:

du -h --max-depth=1 /ruta/al/directorio

En este caso se han indicado dos opciones:

  • -h o --human-readable: Presenta los tamaños en formato comprensible como K (kilobytes), M (megabytes), G (gigabytes). Si se omite, los tamaños se mostrarán en bloques, lo que puede resultar poco intuitivo.
  • --max-depth=1: Limita la recursividad a un nivel por debajo de la ruta especificada.

Ejemplo práctico

Así, para saber cuánto espacio ocupa la carpeta de un usuario, solo se debe ejecutar el siguiente comando:

du -h --max-depth=1 /home/usuario

Este comando generará una lista con el tamaño total de cada subcarpeta dentro de `/home/usuario, lo que resulta ideal para tener una visión general del uso del espacio sin entrar en demasiados detalles.

Ver carpetas hasta el segundo nivel

En algunos casos puede interesarte un análisis un poco más profundo, por ejemplo, para ver carpetas y subcarpetas sin llegar al fondo completo de la jerarquía. Para ello, basta con aumentar la profundidad a dos niveles:

du -h --max-depth=2 /ruta/al/directorio

La principal ventaja de este enfoque es que permite identificar cuáles son las subcarpetas que más espacio ocupan dentro de otras, obteniendo al mismo tiempo una vista jerárquica más completa sin sobrecargar la salida.

Ejemplo con /var

Para saber cuánto ocupan las diferentes carpetas dentro, por ejemplo, de `/var, puedes utilizar el siguiente comando:

du -h --max-depth=2 /var

Esto permite ver no solo el tamaño total de /var/log, sino también los componentes más pesados dentro de ese directorio. Una posible salida de este comando sería algo como lo siguiente:

300M    /var/log/journal
150M    /var/log/apache2
500M    /var/log
100M    /var/cache/apt
600M    /var/cache
2.0G    /var

Ordenar las carpetas por tamaño

Cuando tienes muchos directorios, es útil ordenarlos para detectar rápidamente cuáles consumen más espacio. Para ello, puedes combinar du con sort:

du -h --max-depth=1 /ruta | sort -hr

En este caso, la salida del comando du se redirige al comando sort, al cual se le indican dos opciones:

  • -h: Usa un orden “humano” o natural, respetando el formato de tamaños como K, M, G.
  • -r: Invierte el orden para mostrar primero las carpetas que más espacio ocupan.

Si solo te interesa conocer, por ejemplo, las cinco carpetas que más espacio ocupan se puede limitar la salida con head:

du -h --max-depth=1 /ruta | sort -hr | head -n 5

Esto comando es particularmente útil cuando se necesita liberar espacio rápidamente y hay que decidir por dónde empezar.

Ver tamaños exactos en KB o MB

En algunos contextos, especialmente cuando se generan reportes o se usan scripts automatizados, es preferible tener tamaños en unidades fijas. Para ello se puede reemplazar la opción -h por -k para usar kilobytes o -m para usar megabytes. Por ejemplo, en megabytes el comando seria:

du -m --max-depth=1 /ruta/al/directorio

Estos valores son ideales para almacenar en archivos CSV o alimentar scripts que dependan de valores numéricos sin sufijos.

Excluir carpetas o archivos del análisis

Si quieres omitir ciertos archivos o directorios durante el escaneo, puedes usar la opción --exclude:

du -h --max-depth=1 --exclude=tmp /ruta/al/directorio

Incluso puedes usar comodines:

du -h --max-depth=2 --exclude='*.log' /var

Esto excluye todos los archivos .log al hacer los cálculos. Una opción ideal si estás analizando directorios que acumulan archivos temporales o de registro que no necesitas considerar.

Ignorar errores de acceso

Si en la ruta hay carpetas a las que no se tiene permiso de acceso, los mensajes de error pueden saturar la salida. Para evitar esto, puedes redirigir los errores estándar (stderr) a /dev/null usando `2>/dev/null. El comando quedaría así:

du -h --max-depth=1 /ruta/al/directorio 2>/dev/null

Esto es especialmente útil en sistemas con múltiples usuarios o donde algunos directorios están protegidos por permisos más restrictivos. Así, puedes centrarte solo en los datos relevantes sin distracciones por errores de acceso.

Automatizar el análisis con cron y scripts

Puedes usar scripts que ejecuten du y guarden los resultados periódicamente. Por ejemplo, para ver cómo evoluciona el espacio usado por un usuario con el tiempo se puede crear un script como el siguiente:

#!/bin/bash
fecha=$(date +%Y-%m-%d)
du -h --max-depth=1 /home/usuario | sort -hr > /home/usuario/uso_disco_$fecha.txt

Guarda esto como reporte_disco.sh y dale permisos:

chmod +x reporte_disco.sh

Agrégalo al crontab:

crontab -e

Y añade:

0 1 * * * /home/usuario/reporte_disco.sh

Esto generará un informe cada noche a la 1 a.m.

Resumen de comandos

En resumen, la tabla siguiente presenta un compendio de todos los comandos analizados en la entrada.

ObjetivoComando
Ver uso a primer niveldu -h --max-depth=1 /ruta
Ver uso a segundo niveldu -h --max-depth=2 /ruta
Ordenar por tamañodu -h --max-depth=1 /ruta | sort -hr
Ver las 5 carpetas más grandesdu -h --max-depth=1 /ruta | sort -hr | head -n 5
Ver en MB o KB exactosdu -m --max-depth=1 o du -k --max-depth=1
Excluir archivos o carpetasdu -h --exclude=tmp /ruta
Ocultar errores de permisosdu -h /ruta 2>/dev/null

Conclusiones

El comando du es mucho más que una simple herramienta de consola: es un aliado indispensable para quienes quieren o necesitan mantener bajo control el uso del disco en sistemas Linux. Su flexibilidad, combinada con herramientas como sort, head y ncdu, lo convierte en una solución ideal tanto para revisiones puntuales como para análisis regulares y automatizados.

Ya sea que estés limpiando tu portátil personal o administrando servidores empresariales, dominar de este comando te permitirá optimizar el almacenamiento, prevenir errores y trabajar con mayor seguridad.

Recuerda revisar periódicamente el uso del disco, automatizar reportes y tomar medidas antes de que surjan los problemas. Con las herramientas correctas, mantener tu sistema limpio y ordenado es más fácil de lo que parece.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Linux

Recent Posts

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

3 días ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

5 días ago

Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia

En casi cualquier análisis estadístico —ya sea en medicina, psicología, economía o ciencia de datos—…

1 semana ago

¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia

El MSCI World Index suele presentarse como “la ventana al mundo” para quienes invierten en…

2 semanas ago

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

En el mundo del análisis de datos solemos escuchar una idea poderosa: cuantos más datos,…

2 semanas ago

Error npm ERR! code EACCES al instalar paquetes en Node.js: Cómo solucionarlo paso a paso

¿Te has encontrado con este error al intentar instalar paquetes con npm? npm ERR! code…

3 semanas ago

This website uses cookies.