← [ BACK_TO_NOTES ]

gdu:交互式目录磁盘占用分析

用 gdu 高速扫描目录树、定位大目录与大文件,并通过 -x 和 --no-delete 安全地分析服务器根文件系统。

#howto #growing #ops #linux #linux

[!info] related notes

gdu:交互式目录磁盘占用分析

定位

gdu 是 Go 编写的高速磁盘占用分析器,主要回答:

这个文件系统里的空间到底被哪些目录和文件占了?

它尤其适合 SSD,并利用并行扫描提高速度。

duf 找到“哪个盘满”
       ↓
gdu 找到“哪个目录大”
       ↓
业务工具判断“能不能删”

安装

优先使用发行版包;如果仓库版本缺失或较旧,可直接使用官方 release binary。

官方 Linux amd64 示例:

curl -L https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz | tar xz
chmod +x gdu_linux_amd64
sudo mv gdu_linux_amd64 /usr/local/bin/gdu

ARM64 主机应下载对应架构的 release,不要照抄 amd64 文件名。

最推荐的服务器分析命令

sudo gdu -x --no-delete /

其中:

  • -x / --no-cross:不要跨文件系统边界;
  • --no-delete:禁用交互界面的删除操作;
  • /:从根文件系统开始分析。

这两个保护参数非常重要。

为什么要 -x

服务器可能存在:

/mnt/nfs
/workspace/gcp-dev-01  # SSHFS
/run
/proc
/sys

如果跨文件系统扫描,可能把远程服务器、网络盘或特殊文件系统一起算进去,既慢又容易误判。

为什么要 --no-delete

gdu 默认交互模式支持 d 删除选中项。生产服务器做诊断时,分析和删除应分离:

先找出来
→ 判断数据类型与 owner
→ 再用专用命令清理

而不是在扫描器里顺手删除。

交互操作

↑ / k          上移
↓ / j          下移
Enter / l      进入目录
← / h          返回上级
s              按大小排序
n              按名称排序
?              帮助

如果没有 --no-delete:

d              删除文件或目录
e              清空目录

因此生产环境建议默认加 --no-delete。

非交互模式

找最大的 N 项:

gdu -n -t 30 /

显示更新时间:

gdu -n -M /

分析最近一段时间产生的数据:

gdu -n --min-age 30d /

也可以把分析结果存到数据库或 JSON,便于后续比较。

与 du / ncdu 的关系

工具特点
du最通用,适合脚本,但手工下钻体验弱
ncdu成熟经典的交互式分析器
gduGo 实现,SSD 上通常扫描更快,交互能力强

一个典型排查

duf /
sudo gdu -x --no-delete /

如果看到:

/var 39G
/srv 28G
/home 28G

继续进入 /srv:

/srv/hermes-personal 28G
→ data 27G
→ profiles/memoflow 16G
→ opencode.db 9G

这就是从“盘快满”逐步定位到“具体业务文件”的过程。

来源

创建于 2026/9/29 更新于 2026/9/29
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本