Si estas en el camino del sysadmin y los servidores con sistema operativo linux que estas administrando se quedan sin espacio, todo empieza a fallar como por ejemplo: Docker deja de funcionar, las bases de datos se frenan y los logs crecen sin control.
En estos casos, necesitas una herramienta rápida, simple y efectiva. Ahí es donde entra ncdu.
¿Qué es ncdu?
ncdu (Ncurses Disk Usage) es una herramienta de terminal que te permite analizar el uso del disco de forma visual e interactiva.
A diferencia del clásico du, ncdu te deja navegar carpetas como si fuera un explorador, pero desde la consola.
¿Cómo se ve ncdu?

La instalación es muy sencilla pero como todos los tutoriales vamos a dejar el comando de terminal para hacerlo:
Ubuntu / Debian
sudo apt install ncdu
CentOS / Rocky / AlmaLinux
sudo yum install ncdu
Uso básico de NCDU
Analizar la raiz o el sistema completo:
ncdu /
Analizar una carpeta especifica:
ncdu /var
Al tirar el comando veras algo similar a:

Hay carpetas que dependiendo el usuario que ejecute ncdu pueda que no tenga permisos o requiera permisos especiales, por eso si estas analizando un servidor que ejecuta docker tal vez convenga ejecutar con sudo.
Un ejemplo especifico:
sudo ncdu /var/lib/docker

En este caso overlay2 es normal encontrar tamaños grandes pero si se ve como la imagen anterior esta bien administrado y auqe el tamaño mas grande de ocupacion son los volumenes que hacen persistente a los datos dentro de los contenedores.
En overlay2 encontramos:
- Imágenes Docker
- Capas de contenedores
- Cambios de filesystem
Si esto crece mucho es recomendable ver:
- Tenés imágenes viejas?
- Contenedores recreados muchas veces?
- Builds acumulados?
- Los datos persistentes son todos realmente necesarios?
La verdad es que docker tiene sus propios comandos para la limpieza que recomiendo que aprendas antes de ejecutar cosas locas.
Por ejemplo podes escuchar que te digan que ejecutes:
docker system prune -a
pero esto si bien «no toca volumenes», si toca: Contenedores parados, Imágenes no usadas y Networks. Te recomiendo que mires bien antes de borrar cosas automaticamente o a lo loco!
Un ejemplo concreto son logs de gran tamaño dentro de contenedores y la verdad que son bastante molestos aunque necesarios. Por ejemplo podriamos mirar:
ncdu /var/lib/docker/containers

No hay ninguna cosa que ocupe mucho. Si los ubiera podria hacer algo como:
truncate -s 0 /var/lib/docker/containers/*/*-json.log
Podria pasar que queremos ver los logs del sistema, y eso lo hariamos con el comando:
sudo ncdu /var/log

700 megas de logs cuando estamos «rascando la olla de disco» podrian ser muy salvadores. Solo con bajar la flechita hasta donde queremos, precionamos la «d» y los borra.
Los logs que generalmente son grandes son: syslog y auth.log y se encuentran en /var/log, con lo cual sin ninguna herramienta loca podriamos:
truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/auth.log
NCDU te permetirá ver visualmente algunas cosas… es un inicio rapido para safar si estas como loco y no consume recursos.
Un tip que te va a gustar es buscar dentro del sistema que archivos son mayor a X tamaño y que te lo muestre para tomar deciciones, en este caso, le puse mayor a 200mb:
sudo find / -type f -size +200M -exec ls -lh {} \; 2>/dev/null | awk '{printf "%-60s %10s\n", $9, $5}'
Solo cambia +200M por la cantidad de megas que queres y tendras un listado de los archivos que superen ese tamaño rapidamente.
El scripting es lo más y aprenderlo de memoria siempre es complicado, pero una vez que empezas es un camino de ida!
Recorda que para aprender más sobre un comando podes ejecutar man y el nombre del programa para que te diga caracteristicas generales del mismo.
man ncdu
