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

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…

4 días ago

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

6 días ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

1 semana ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

2 semanas ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

2 semanas ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

3 semanas ago

This website uses cookies.