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: 权限不够无法扫描?¶
参考资源¶
- GitHub:https://github.com/bootandy/dust
- 替代工具:ncdu、duf、gdu