跳转至

Dust 磁盘用量分析

为什么要学 Dust

Dust(du + Rust)是一个直观的磁盘空间分析工具,用 Rust 编写。相比传统的 du 命令,Dust 提供了树形可视化、百分比柱状图和颜色编码,让你一眼看出哪些目录和文件占用了最多空间。当服务器磁盘快满、需要清理空间时,Dust 是最快找到"元凶"的工具。


核心概念

概念白话解释用途
Tree View树形视图层级显示目录大小
Bar Chart柱状图可视化比例
Depth深度展示的目录层级数
Apparent Size表面大小文件实际内容大小
Disk Usage磁盘用量实际占用的磁盘空间

安装配置

# macOS
brew install dust

# Cargo
cargo install du-dust

# Ubuntu (下载二进制)
wget https://github.com/bootandy/dust/releases/latest/download/dust-*-x86_64-unknown-linux-musl.tar.gz
tar xzf dust-*.tar.gz && sudo mv dust /usr/local/bin/

快速上手

# 当前目录分析
dust

# 指定目录
dust /home/user

# 限制显示行数
dust -n 20

# 指定深度
dust -d 2

# 反向排序(最小在前)
dust -r

# 只显示文件(不显示目录)
dust -f

# 只显示目录
dust -D

# 忽略隐藏文件
dust -i

# 表面大小(非磁盘占用)
dust -s

# 输出示例:
#  5.2G ┌── node_modules          │████████████████████ │  52%
#  2.1G ├── .git                  │████████             │  21%
#  1.3G ├── dist                  │█████                │  13%
#  800M ├── data                  │███                  │   8%
#  400M ├── src                   │██                   │   4%
#  200M ├── docs                  │█                    │   2%
# 10.0G   ┌── project             │█████████████████████│ 100%

进阶用法

排除目录

# 排除 node_modules
dust -X node_modules

# 排除多个
dust -X node_modules -X .git -X target

# 使用正则排除
dust -e ".*cache.*"

搭配其他工具

# 找出最大的文件
dust -f -n 20 /home

# 定期监控
watch -n 60 "dust -d 1 /var"

# 比较两个目录
diff <(dust -d 1 dir1 2>/dev/null) <(dust -d 1 dir2 2>/dev/null)

清理工作流

# 步骤1:找出大目录
dust -d 2 ~

# 步骤2:深入查看
dust -d 3 ~/projects

# 步骤3:找出大文件
dust -f -n 30 ~/projects

# 步骤4:清理
rm -rf ~/projects/old-project/node_modules

常见问题

Q: 与 ncdu 的区别?

  • Dust:静态显示结果,适合快速查看
  • ncdu:交互式界面,可以浏览和删除

Q: 为什么大小和 du 不一致?

默认显示磁盘占用(block size),使用 -s 显示表面大小。稀疏文件和硬链接会导致差异。

Q: 权限不够无法扫描?

sudo dust /var  # 使用 sudo 扫描系统目录

参考资源

  • GitHub:https://github.com/bootandy/dust
  • 替代工具:ncdu、duf、gdu