overview
Por qué lo hice
Me cansé de ejecutar du -sh /* y entrecerrar los ojos ante el resultado. Quería una herramienta que encontrara mis discos sola, que mostrara barras proporcionales para repasar la lista rápido y que me dejara abrir una carpeta cada vez. Lo que encontré necesitaba una interfaz gráfica o un montón de dependencias.
Cómo funciona
Está escrito en Go, solo con la biblioteca estándar. Compila a un único binario estático, así que no hay nada que instalar.
Al arrancar, lista los discos que encuentra como opciones numeradas. Si solo hay uno, lo elige por ti. En Linux lee /proc/mounts, se queda con las entradas cuyo dispositivo empieza por / y omite los sistemas de archivos falsos, como tmpfs, proc, sysfs, cgroup y squashfs. Si no encuentra nada, usa /. En Windows comprueba las letras de unidad de la A a la Z.
Después te pide una ruta de inicio. Pulsa Enter para empezar en la raíz del disco, o escribe un subdirectorio, absoluto o relativo al disco. Tiene que existir y ser una carpeta, o la herramienta termina con un error.
Tras el escaneo ves las entradas de primer nivel de esa carpeta, las más grandes primero. Cada línea tiene el nombre, el tamaño y una barra proporcional, y las carpetas llevan además un número. Debajo aparece cuántos elementos había y cuántos segundos tardó el escaneo.
Desde ahí:
- Un número abre esa carpeta.
tmuestra un árbol. Pide una profundidad máxima, por defecto 2, máximo 5.bvuelve atrás. Solo funciona después de entrar en una carpeta.qsale.
Los archivos se listan, pero no se pueden abrir.
Se miden hasta 8 entradas a la vez, con goroutines, y un contador en vivo muestra cuántos elementos van hechos. Una carpeta que no puede leer cuenta como 0 bytes y el escaneo sigue. Si un worker entra en pánico, se recupera y la herramienta no se cae.
Los nombres que empiezan por punto se omiten, salvo en el primer nivel de /. El árbol siempre los omite.
Suma tamaños de archivo, no bloques de disco. Los tamaños llevan color: rojo desde 10 GB, naranja desde 1 GB, amarillo desde 100 MB, cian desde 10 MB y tenue por debajo.
--debug (o -debug) escribe un registro en diskmap_debug.log.
Descarga
El grupo tiene cuatro archivos:
main.goansiwindows.go, que activa los colores ANSI en la consola de Windowsansiother.go, que no hace nada en otros sistemasdiskmap.exe
El .exe es solo para Windows. No hay binario para Linux, así que en Linux se compila desde el código fuente.
Stack
Go, solo biblioteca estándar.