Claude Sonnet 4.5 协助编写。
在日常的系统管理和磁盘空间清理工作中,我们经常需要分析磁盘使用情况。本文将对比四个常用的磁盘使用分析工具:传统的 du、经典的交互式工具 ncdu、现代化的 gdu 和 dust。
工具简介
du (Disk Usage)
du 是 Unix/Linux 系统自带的经典磁盘使用分析工具,已经存在了几十年。它是最基础、最通用的选择。
ncdu (NCurses Disk Usage)
ncdu 是基于 ncurses 库的磁盘使用分析工具,提供了简洁的交互式文本界面。它是最早流行的交互式磁盘分析工具之一。
gdu (Go Disk Usage)
gdu 是用 Go 语言编写的现代化磁盘分析工具,提供了交互式界面和更快的扫描速度。
dust (du + rust = dust)
dust 是用 Rust 编写的磁盘使用分析工具,以更直观的可视化输出为特色。
功能对比
| 特性 | du | ncdu | gdu | dust |
|---|---|---|---|---|
| 交互式界面 | ❌ | ✅ | ✅ | ❌ |
| 扫描速度 | 慢 | 中等 | 快 | 中等 |
| 可视化输出 | 基础 | 中等 | 强大 | 优秀 |
| 系统自带 | ✅ | ❌ | ❌ | ❌ |
| 内存占用 | 低 | 中 | 中 | 低 |
| 删除文件功能 | ❌ | ✅ | ✅ | ❌ |
| 编程语言 | C | C | Go | Rust |
| 易用性 | 中 | 高 | 高 | 高 |
使用示例
du 基本用法
# 显示当前目录大小
du -sh
# 显示所有子目录大小并排序
du -h --max-depth=1 | sort -hr
# 显示最大的10个目录
du -h | sort -rh | head -10优点:
- 系统自带,无需安装
- 稳定可靠,脚本友好
- 广泛的兼容性
缺点:
- 速度较慢
- 输出不够直观
- 缺少交互功能
ncdu 基本用法
# 安装
# Debian/Ubuntu
sudo apt install ncdu
# macOS
brew install ncdu
# RHEL/CentOS
sudo yum install ncdu
# 分析当前目录
ncdu
# 分析指定目录
ncdu /path/to/directory
# 扫描时排除某些目录
ncdu --exclude /path/to/exclude
# 导出结果到文件(可在其他机器上查看)
ncdu -o result.json
ncdu -f result.json # 读取导出的文件交互式操作:
↑↓或j/k: 上下移动→或Enter: 进入目录←: 返回上级目录d: 删除选中的文件/目录g: 显示百分比/图形条n: 按名称排序s: 按大小排序q: 退出
优点:
- 成熟稳定,广泛使用
- 交互式界面简洁清晰
- 可以直接删除文件
- 支持导出和导入扫描结果
- 内存占用合理
- 在大多数发行版仓库中可用
缺点:
- 扫描速度比 gdu 慢
- 界面相对传统,不如 gdu 美观
- 大型目录扫描时需要等待
gdu 基本用法
# 安装
# macOS
brew install gdu
# Linux
curl -L https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz | tar xz
sudo mv gdu /usr/local/bin/
# 分析当前目录
gdu
# 分析指定目录
gdu /path/to/directory
# 非交互模式
gdu -n /path/to/directory优点:
- 扫描速度极快
- 交互式 TUI 界面,可以用键盘导航
- 可以直接在界面中删除文件
- 支持彩色输出
- 可以显示进度条
缺点:
- 需要单独安装
- 交互模式在某些脚本场景下不适用
dust 基本用法
# 安装
# macOS
brew install dust
# Linux
cargo install du-dust
# 基本使用
dust
# 分析指定目录
dust /path/to/directory
# 显示更多层级
dust -d 3
# 只显示目录
dust -t优点:
- 树状图可视化输出,非常直观
- 彩色条形图显示占用比例
- 输出清晰易读
- 速度较快
- 默认排序输出
缺点:
- 需要单独安装
- 没有交互式界面
- 相对 du 功能较新,可能有兼容性问题
实际使用场景推荐
选择 du 的场景
- 在生产服务器上进行快速检查
- 编写自动化脚本
- 需要最大兼容性
- 系统资源受限
选择 ncdu 的场景
- 需要交互式浏览但服务器上没有 gdu
- 偏好传统稳定的工具
- 需要导出扫描结果到其他机器分析
- 在资源受限的系统上需要交互功能
- 系统包管理器中已有 ncdu
选择 gdu 的场景
- 需要深入分析大型目录结构
- 需要最快的扫描速度
- 追求现代化的交互体验
- 在个人工作站上使用
- 经常处理超大目录
选择 dust 的场景
- 需要快速浏览目录大小
- 偏好可视化输出
- 想要更现代化的工具体验
- 不需要交互式操作
- 需要快速生成报告
性能对比
在一个包含 50GB 数据、约 100,000 个文件的目录上测试:
- du: ~8 秒
- ncdu: ~5 秒(扫描阶段)
- gdu: ~2 秒
- dust: ~4 秒
注:实际性能取决于硬件配置、文件系统类型和文件数量。ncdu 的优势在于扫描后的交互浏览非常流畅。
总结
四个工具各有千秋:
- du 是经典之选,适合脚本和生产环境
- ncdu 是稳定可靠的交互式工具,兼具易用性和可用性
- gdu 是性能之王,提供强大的交互功能和最快速度
- dust 是可视化专家,输出最为直观
工具演进历史
这四个工具代表了磁盘分析工具的演进过程:
- du (1970s): 命令行时代的基础工具
- ncdu (2007): 加入交互式界面,提升用户体验
- gdu (2020): 现代编程语言带来的性能提升
- dust (2018): 注重可视化和用户友好度
我的推荐
对于日常使用,我的建议是:
- 保留
du用于脚本和快速检查 - 安装
ncdu作为通用的交互式工具(服务器友好) - 安装
gdu用于深入的磁盘分析(个人工作站) - 安装
dust用于快速浏览和可视化
如果只能选一个额外工具:
- 服务器环境: 选
ncdu(稳定、轻量、可靠) - 个人电脑: 选
gdu(快速、现代、强大) - 快速查看: 选
dust(直观、美观、高效)
根据具体需求选择合适的工具,甚至可以将它们组合使用,发挥各自的优势。
1 条评论
提个建议 可以附一下命令执行输出结果对比