dua-cli - 极速磁盘空间分析工具
dua-cli - 极速磁盘空间分析工具
在日常开发中,磁盘空间管理总是一个绕不开的话题。无论是清理 Docker 镜像、删除日志文件,还是找出项目目录里占空间的元凶,我们都需要一款趁手的工具。传统的 du 命令虽然强大,但输出冗长且难以阅读;图形化工具又显得笨重。今天要介绍的是 dua-cli —— 一款用 Rust 编写的交互式磁盘使用分析器,它完美平衡了速度与易用性。
项目简介
dua(Disk Usage Analyzer)是一个终端下的磁盘空间分析工具,由 Rust 社区开发者 Sebastian Thiel 创建。它的设计目标是:在提供详尽信息的同时,保持极致的响应速度。
项目使用 Rust 的异步和并行能力,能够充分利用多核 CPU 和 SSD 的 IO 性能。在扫描大型目录树时,dua 的速度可以轻松超越传统的 du 命令数倍甚至数十倍。
核心功能
1. 并行扫描,极速响应
dua 默认启用并行扫描,会尽可能榨干你的 SSD 性能。实测在扫描包含数百万文件的目录时,dua 比 du -sh 快 5-10 倍。
# 传统方式,可能需要几分钟
du -sh /path/to/large/project
# dua 方式,通常只需几十秒
dua /path/to/large/project
2. 交互式 TUI 界面
dua 最吸引人的是其基于终端的用户界面。启动后,你会看到一个类似文件管理器的视图:
dua i # 启动交互模式
在交互模式下,你可以:
- 用方向键或 Vim 键位(
j/k)导航 - 按
Enter进入子目录,按Backspace返回上级 - 按
d快速删除文件或目录(带确认提示) - 按
s切换排序方式(大小/名称/修改时间) - 按
?查看完整快捷键列表
3. 删除模式
找到大文件后,直接在界面内删除,无需切换到另一个终端窗口:
选中文件 → 按 d → 确认删除 → 文件立即消失
这个删除操作经过优化,比 rm -rf 更快,尤其适合清理大量小文件。
使用场景
场景一:清理 Docker 占用的空间
Docker 镜像和构建缓存很容易吃光磁盘空间。用 dua 快速定位:
sudo dua i /var/lib/docker
场景二:分析项目依赖体积
Node.js 项目的 node_modules 常常是磁盘杀手:
cd my-project
dua i node_modules
进入交互模式后,按大小排序,一眼就能看出哪个依赖最占空间。
场景三:服务器磁盘告警排查
收到磁盘空间告警时,快速找出元凶:
dua / | head -20 # 显示根目录下最大的 20 个目录
快速开始
安装
dua 提供了多种安装方式,覆盖主流平台:
macOS (Homebrew)
brew install dua-cli
Arch Linux
sudo pacman -S dua-cli
Fedora
sudo dnf install dua-cli
通用安装脚本
curl -LSfs https://raw.githubusercontent.com/Byron/dua-cli/master/ci/install.sh | \
sh -s -- --git Byron/dua-cli --crate dua
从源码编译(需要 Rust 工具链)
cargo install dua-cli
基础用法
# 查看当前目录大小
dua
# 查看指定目录
dua ~/Downloads
# 启动交互模式
dua i
# 查看帮助
dua --help
总结
dua-cli 是一款典型的”小而美”工具:它只做一件事(分析磁盘使用),但做得又快又好。相比 ncdu 等同类工具,dua 在并行性能和交互体验上都有明显优势。
如果你的工作经常涉及服务器运维或大型项目管理,dua 绝对值得加入你的工具箱。毕竟,在终端里优雅地解决问题,一直是 Unix 哲学的精髓所在。
项目地址: https://github.com/Byron/dua-cli
许可证: MIT