dua-cli - 极速磁盘空间分析工具

在日常开发中,磁盘空间管理总是一个绕不开的话题。无论是清理 Docker 镜像、删除日志文件,还是找出项目目录里占空间的元凶,我们都需要一款趁手的工具。传统的 du 命令虽然强大,但输出冗长且难以阅读;图形化工具又显得笨重。今天要介绍的是 dua-cli —— 一款用 Rust 编写的交互式磁盘使用分析器,它完美平衡了速度与易用性。

项目简介

dua(Disk Usage Analyzer)是一个终端下的磁盘空间分析工具,由 Rust 社区开发者 Sebastian Thiel 创建。它的设计目标是:在提供详尽信息的同时,保持极致的响应速度

项目使用 Rust 的异步和并行能力,能够充分利用多核 CPU 和 SSD 的 IO 性能。在扫描大型目录树时,dua 的速度可以轻松超越传统的 du 命令数倍甚至数十倍。

demo

核心功能

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