Ncdu:轻量高效的终端磁盘用量分析器 #
Ncdu 是什么? #
Ncdu(全称 NCurses Disk Usage)是一款基于 ncurses 文本用户界面的磁盘用量分析器,本质上可以理解为 du 命令的交互式可视化版本。它专为没有完整图形环境、只能通过 SSH 连接的远程服务器而设计,但同样适用于普通桌面系统。
启动后,Ncdu 会扫描指定目录,并按照占用空间大小列出子目录与文件,让你一眼看出"空间被谁吃掉了"。你可以用方向键在目录树中自由穿行,随时切换按大小或名称排序,查看文件权限、所有者与修改时间,甚至直接在界面内删除文件。官方将其定位为"快速、简单、易用,并能在任何类 POSIX 系统上运行"的磁盘分析工具,采用 MIT 许可证开源发布。
Ncdu 有哪些亮点特色? #
-
纯文本界面,远程服务器友好:基于 ncurses 构建,无需 GUI 环境,通过 SSH 即可在无桌面的服务器上完整使用,特别适合排查线上主机磁盘爆满问题。
-
极速扫描与按需并行:自 2.5 版本起支持并行扫描,默认单线程运行,通过
-t8即可启用 8 线程扫描,在大容量目录树上显著缩短等待时间。 -
静态二进制,下载即用:官方为 Linux 提供 x86、x86_64、ARM、AArch64 四个架构的静态二进制包,解压后直接运行,无需编译、无需安装任何依赖。
-
二进制导出格式,突破内存限制:2.6 版本引入的全新二进制导出格式(
-O)支持内置压缩与低内存多线程导出,并能浏览大到无法整体载入内存的目录树;相比 JSON 导出,多线程场景下内存占用优势明显。 -
灵活的数据交换能力:支持 JSON 格式(
-o)导出与导入,可选用 Zstandard 压缩(-c)大幅缩减文件体积,方便把扫描结果传给其他工具或离线分析。 -
丰富的界面选项:可切换显示磁盘占用/表观大小、隐藏文件、文件数量、修改时间、百分比与条形图;
--graph-style支持 hash、half-block、eighth-block 三种图形样式,--color=dark可开启彩色显示。 -
深度的扫描控制:支持
-x不跨文件系统、--exclude排除模式、-X从文件读取排除规则、--exclude-caches跳过缓存目录、--exclude-kernfs排除 Linux 伪文件系统、-L跟随符号链接等多种精细选项。 -
开源且广泛收录:采用 MIT 许可证,已被 Debian、Ubuntu、Fedora、Arch、Alpine、OpenSUSE、FreeBSD、OpenBSD、NixOS、Homebrew、MacPorts 等数十个发行版与包管理系统收录,几乎随处可装。

免费下载 Ncdu #
以下为官方提供的 Linux 静态二进制包,下载解压后即可直接运行,无需编译或安装。
| 文件名 | 描述 | 大小 | 下载 |
|---|---|---|---|
| ncdu-2.9.1-linux-aarch64.tar.gz | Linux AArch64(ARM64)静态二进制 | 382.2 KB | 夸克网盘 |
| ncdu-2.9.1-linux-arm.tar.gz | Linux ARM(32 位)静态二进制 | 377.8 KB | 夸克网盘 |
| ncdu-2.9.1-linux-x86.tar.gz | Linux x86(32 位)静态二进制 | 359.5 KB | 夸克网盘 |
| ncdu-2.9.1-linux-x86_64.tar.gz | Linux x86_64(64 位)静态二进制 | 368.2 KB | 夸克网盘 |
说明:官网同时提供最新稳定版 2.9.2(Zig 版本,2025-10-24 发布)与长期维护版 1.22(C 版本,2025-03-05 发布)的源码包(ncdu-2.9.2.tar.gz / ncdu-1.22.tar.gz)。若你需要自行编译,可前往官网 Downloads 页面获取源码与校验信息。
Ncdu 如何使用? #
Ncdu 的使用方式非常直接,核心流程如下:
-
启动扫描:在终端输入
ncdu会扫描当前目录;指定路径则扫描该目录,例如ncdu /var/log。初次扫描大目录会显示进度,扫描完成后自动进入浏览界面。 -
浏览目录树:使用 ↑/↓ 方向键移动光标,按
Enter或 → 进入选中的目录,按 ← 返回上一级。顶部始终显示当前路径,底部显示整体磁盘占用情况。 -
切换排序方式:按
n按文件名排序,按s按文件大小排序,按C按子项数量排序;开启扩展模式(-e)后还可用M按修改时间排序。 -
查看与操作文件:按
i查看选中项的详细信息(路径、大小、权限、所有者等),按g切换条形图显示,按a在磁盘占用与表观大小之间切换。按d可删除选中项(会弹出确认窗口,2.9 版本改进了该确认窗口的可访问性),按b可在当前目录生成一个 shell。 -
退出与导出:按
q退出;若只想导出数据而不进入界面,可使用ncdu -o result.json /path(JSON 格式)或ncdu -O result.bin /path(二进制格式),之后用ncdu -f result.json重新加载浏览。
常用命令行示例:
# 扫描根目录,启用 8 线程并行扫描
ncdu -t8 /
# 只统计同一文件系统,并排除 node_modules
ncdu -x --exclude node_modules /home
# 导出为 Zstandard 压缩的 JSON
ncdu -o - /data | zstd > data.json.zst
# 导出为二进制格式(适合超大型目录树)
ncdu -O data.bin /data
在配置文件中(2.x 版本为 $XDG_CONFIG_HOME/ncdu/config),你可以写入常用参数,例如 --color=dark 开启彩色显示。
Ncdu 的常见问题? #
Ncdu 和 du 命令有什么区别?
du 只能输出一长串静态文本,还需要配合 sort、head 等命令才能定位大目录;而 Ncdu 提供交互式的可浏览界面,能直接展开目录树、切换排序、查看文件详情并删除文件,定位空间占用问题的效率高得多。
为什么 Ncdu 默认没有颜色?
按照官网说明,Ncdu 自 1.13 起支持颜色,1.17 和 2.0 曾默认开启,但因为部分终端配色下文字难以辨认,官方在 1.20 和 2.4 中又改回默认关闭。如果你喜欢彩色显示,可以在配置文件中加入 --color=dark 自行开启。
导出文件太大怎么办?
导出体积与文件数量线性相关:约 1 万个文件的 JSON 导出在 600~700 KiB(未压缩),gzip 压缩后约 100 KiB,百万级文件可能达到几十 MB。官网建议使用 -c 启用 Zstandard 压缩,或在多线程/超大目录树场景下改用二进制格式 -O,它自带压缩且支持低内存导出。
扫描超大目录树时内存占用很高怎么解决?
单线程模式下 JSON 导出(-o)内存占用很低;但一旦启用多线程(-t),整棵目录树会先构建在内存中再写出,内存需求显著增加。此时应改用二进制格式(-O),它不存在这个问题,能够以任意线程数高效导出。
Zig 版本的 2.x 和 C 版本的 1.x 应该选哪个?
2.x 是用 Zig 重写的新版本,在界面和性能上有明显改进,但需要 Zig 0.14 或 0.15 编译,而 Zig 语言与编译器目前仍不够稳定。官网明确建议:如果编译失败或需要更稳定的编译环境,请使用 1.x 分支(最新为 1.22,仍在持续维护)。
Ncdu 能在 Windows 上运行吗?
可以。官网在"Packages and ports"一节中提到了 Windows 的二进制版本,同时也提供了 Tru64 UNIX 的二进制。不过 Ncdu 的核心定位仍是类 POSIX 系统,Windows 上的体验以官方给出的二进制为准。
Ncdu 能扫描网络存储或复杂 RAID 吗?
官网作者特别提到,如果你运行的是网络存储、非标准文件系统或复杂 RAID 等不寻常的配置,欢迎反馈并行扫描功能的性能影响。可通过 -0 --quit-after-scan 关闭浏览器界面只做扫描,或用 -0o/dev/null 对 JSON 导出做基准测试。(来源:官网正文脚注)
Ncdu 如何安装? #
从官方静态二进制安装(推荐,Linux) #
- 根据架构下载对应的
ncdu-2.9.1-linux-*.tar.gz文件。 - 解压:
tar -xzf ncdu-2.9.1-linux-x86_64.tar.gz。 - 将得到的
ncdu可执行文件移动到PATH目录,例如:sudo mv ncdu /usr/local/bin/。 - 执行
ncdu --version验证安装是否成功。
通过包管理器安装 #
- Debian / Ubuntu:
sudo apt install ncdu - Fedora:
sudo dnf install ncdu - Arch Linux:
sudo pacman -S ncdu(也提供ncdu-bin) - Alpine Linux:
sudo apk add ncdu - openSUSE:
sudo zypper install ncdu - Void Linux:
sudo xbps-install ncdu - NixOS / GNU Guix:通过对应的声明式包管理安装
- FreeBSD / OpenBSD:
pkg install ncdu或pkg_add ncdu - OpenWRT:通过 opkg 安装
macOS #
- Homebrew:
brew install ncdu - MacPorts:
sudo port install ncdu - Fink:通过 Fink 安装 ncdu
从源码编译 #
- Zig 版本(2.x):下载
ncdu-2.9.2.tar.gz,需要 Zig 0.14 或 0.15 环境,解压后按官方 Makefile 编译。 - C 版本(1.x,LTS):下载
ncdu-1.22.tar.gz,使用常规./configure && make && sudo make install流程,编译环境要求更稳定。 - 开发版本:
git clone git://g.blicky.net/ncdu.git/,master分支为 C 版本,zig分支为 Zig 版本。
提示:官网所有发行包均提供 PGP 签名与 MD5/SHA1/SHA256 校验值,作者个人密钥指纹为
7446 0D32 B808 10EB A9AF A2E9 6239 4C69 8C27 39FA,下载源码后建议校验完整性。
Ncdu 如何卸载? #
Linux #
- 通过包管理器安装的:使用对应命令卸载,例如
sudo apt remove ncdu、sudo dnf remove ncdu、sudo pacman -R ncdu、sudo apk del ncdu。 - 使用静态二进制手动安装的:直接删除可执行文件即可,例如
sudo rm /usr/local/bin/ncdu。 - 源码编译安装的:若保留了源码目录,可在其中执行
sudo make uninstall;否则手动删除安装路径下的ncdu文件与对应手册页。
macOS #
- Homebrew:
brew uninstall ncdu - MacPorts:
sudo port uninstall ncdu - Fink:
fink remove ncdu
Windows #
官方提供的是独立二进制文件,通常不写入注册表。直接删除 ncdu.exe 所在文件即可完成卸载。
残留文件清理 #
Ncdu 本体不会在系统中留下大量缓存,但如果你曾修改过配置文件,可手动删除以彻底清理:
- Linux / macOS:
~/.config/ncdu/config(或$XDG_CONFIG_HOME/ncdu/config) - 若曾导出过 JSON 或二进制扫描结果(如
result.json、data.bin),这些文件需要自行删除。
卸载后如仍能在终端执行 ncdu,请检查是否有多个安装来源共存,使用 which -a ncdu 确认并逐一清理。
