Продолжаем серию про утилиты, переписанные на 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
