Linux 系統管理員必學:用 ncdu 快速搵出食碟怪獸

# Linux 系統管理員必學:用 ncdu 快速揾出食碟怪獸 做 IT 嘅你一定試過呢個情況:Server 無啦啦爆碟,但係 `df -h` 只係話你知邊個 partition 滿咗,究竟邊個 folder 最食位?逐個 `du -sh *` 慢慢揾?等到天光都未揾到啦! 今日同大家介紹一個超好用嘅 CLI 工具 — **ncdu**(NCurses Disk Usage),佢係 `du` 嘅 ...

# Linux 系統管理員必學:用 ncdu 快速揾出食碟怪獸

做 IT 嘅你一定試過呢個情況:Server 無啦啦爆碟,但係 `df -h` 只係話你知邊個 partition 滿咗,究竟邊個 folder 最食位?逐個 `du -sh *` 慢慢揾?等到天光都未揾到啦!

今日同大家介紹一個超好用嘅 CLI 工具 — **ncdu**(NCurses Disk Usage),佢係 `du` 嘅 interactive 版本,可以幫你極速定位食碟元兇。

## ncdu 係乜嘢嚟?

ncdu 係一個基於 ncurses 嘅磁碟用量分析工具,佢會 scan 你指定嘅 directory,然後用一個 interactive TUI(Text User Interface)顯示每個 folder 同 file 嘅大小。你可以用箭嘴鍵 navigate,即時 drill down 入去子目錄,仲可以即場 delete 檔案,唔使 exit 出去再 `rm`。

最正係:佢支援 **SSH** 環境!你 remote 入去 server 都用得,完全唔使 GUI。

## 點樣安裝 ncdu?

Ubuntu/Debian:

sudo apt update && sudo apt install ncdu -y

CentOS/RHEL/Rocky Linux:

sudo dnf install ncdu -y
# 或者用 EPEL
sudo yum install epel-release -y && sudo yum install ncdu -y

macOS(如果你用 Mac 做 management):

brew install ncdu

## ncdu 基本用法

最簡單嘅用法,直接 scan 當前 directory:

ncdu

如果你想 scan 特定 path,例如 `/var/log`:

ncdu /var/log

Scan 完成之後,你會見到一個類似檔案管理員嘅界面:
– 用 **↑ ↓** 箭嘴鍵移動
– 按 **Enter** 進入子目錄
– 按 **←** 返回上一層
– 按 **d** 直接 delete 選中嘅檔案或目錄
– 按 **q** 退出
– 按 **?** 睇 help

## 進階技巧:export 報告俾老細睇

有時你要交份報告俾 manager,話佢知邊度食咗幾多位。ncdu 支援 export 功能:

# Export 做 JSON 格式
ncdu -o /tmp/disk_report.json /

# 之後可以 reload 返個 report(唔使重新 scan)
ncdu -f /tmp/disk_report.json

呢個功能超實用!你可以定時 cron job scan 一次,然後隨時 load 返嚟分析,唔使次次等幾分鐘 scan。

## 實戰案例:揾出 Docker overlay2 食碟元兇

做 DevOps 嘅朋友一定遇過:Docker 嘅 `/var/lib/docker/overlay2` 無啦啦爆碟。用 ncdu 可以極速定位:

ncdu /var/lib/docker/overlay2

入到去之後,你會見到一堆 hash folder。按 `d` 可以即場 delete 唔要嘅舊 layer(當然你要 confirm 個 container 已經唔用)。

## ncdu vs 其他工具

| 工具 | 優點 | 缺點 |
|——|——|——|
| `du -sh` | 內置,唔使裝 | 冇 interactive,要逐層手動 |
| `ncdu` | Interactive、快、SSH 可用 | 要另外安裝 |
| `baobab` | GUI、靚 | 要 desktop environment |
| `duc` | 有 index、快 | 設定複雜 |

## 總結

ncdu 係每個 Linux 系統管理員工具箱入面必備嘅利器。佢輕量、快速、interactive,特別適合喺 SSH 環境下快速排查磁碟問題。下次 server 爆碟,唔好再 `du -sh *` 慢慢等了,用 ncdu 一分鐘搞掂!

🔗 參考資料:NVD NIST 漏洞資料庫

**Pro tip:** 將 `ncdu -o /tmp/disk_$(date +%Y%m%d).json /` 放入 weekly cron job,咁你就可以追蹤磁碟用量趨勢,提早預防爆碟災難。

#Linux #Server #SSH #技術分享 #IT教學

Linux 系統管理員必學:用 ncdu 快速搵出食碟怪獸 - 文章重點速覽 infographic