dirrust — analizador de disco en la terminal
Un WinDirStat para la terminal: escaneo paralelo que no bloquea la interfaz, treemap en color, ranking ordenable, desglose por extensión, detección de duplicados por contenido y borrado con red de seguridad. Cien por cien local, sin enviar nada a ninguna parte.


El treemap
El algoritmo es el *squarified treemap* de Bruls y otros: reparte el área buscando rectángulos con la proporción más cercana al cuadrado, porque un rectángulo alargado es imposible de comparar de un vistazo.
El render aprovecha que una celda de terminal es alta y estrecha: pintando el carácter de medio bloque ▀ con un color de frente y otro de fondo, cada celda da dos píxeles verticales en lugar de uno. La resolución vertical se dobla sin salir de la terminal. El color es consistente por extensión y hay sombreado *cushion* opcional para el aspecto tridimensional.
Duplicados en tres fases
Hashear todo el disco para encontrar duplicados es tirar el tiempo. dirrust descarta en cascada: primero agrupa por tamaño, porque dos archivos de tamaño distinto nunca son iguales y eso elimina la mayoría sin leer un byte; después compara un hash parcial de los que sobreviven; y solo al final calcula el hash completo de los candidatos que quedan.
El hash es xxh3 de xxhash-rust, en paralelo con rayon. No es criptográfico a propósito: aquí el trabajo es descartar rápido, no resistir a un adversario.
Escaneo que no bloquea
El recorrido va con jwalk en un hilo de fondo y se comunica con la interfaz por un canal de crossbeam. La tabla y el treemap se van construyendo durante el escaneo en vez de aparecer al final: en un árbol grande, ver el resultado parcial es la diferencia entre una herramienta usable y una barra de progreso.
El tamaño se puede conmutar en caliente entre el aparente y el que ocupa en disco de verdad (st_blocks × 512), que es el que importa cuando se busca espacio.
Borrar sin arrepentirse
La herramienta borra archivos, así que el borrado es la parte más conservadora: por defecto va a la papelera XDG mediante el crate trash, hay guardas sobre rutas protegidas y doble confirmación para directorios no vacíos. El borrado permanente existe, pero hay que pedirlo.
El aviso está en la primera pantalla del README, no escondido al final.
Stack
¿Te interesa cómo está resuelto algo de aquí, o tienes un problema parecido?