Продолжаем серию про утилиты, переписанные на Rust: после find очередь du. dust считает занятое место тем же обходом каталогов, но сразу строит дерево, отсортированное по размеру, с процентной шкалой напротив каждой строки — без привычной цепочки du -h | sort -rh | head.

dust

По умолчанию вывод ограничен высотой терминала и показывает самые тяжёлые каталоги сверху. Если нужно конкретное число строк или фиксированная глубина дерева — -n и -d:

dust -n 30 -d 3

-d 3 ограничивает дерево тремя уровнями вложенности, что для du потребовало бы --max-depth=3 плюс отдельную сортировку результата — dust сортирует сразу.

Обход каталогов у dust многопоточный, количество воркеров задаётся через -T (по умолчанию — число ядер CPU). На сетевых файловых системах или каталогах с миллионами файлов это даёт разницу: однопоточный du там упирается в задержки на каждый stat, а параллельный обход возвращает первые результаты быстрее:

dust -T 16 /mnt/nfs-share

Для отсеивания мусора при разборе — -X игнорирует файлы и каталоги по точному имени (например, dust -X node_modules), а -e/-v фильтруют по regex на включение или исключение.

Отдельно стоит флаг -s (--apparent-size) — показывает размер файлов как есть, а не фактически занятое место на диске с учётом блоков и дыр в разреженных файлах. Разница та же, что между du и du --apparent-size: для реального планирования места под диск нужен режим по умолчанию, а -s полезен, когда интересен логический размер данных, а не физический.

#rust #linux