ncdu 互動式磁碟使用分析 文章首圖

ncdu 互動式磁碟使用分析

ncdu 互動式磁碟使用分析

在 Linux 系統管理中,快速定位佔用磁碟空間的檔案或目錄是日常維護的重要環節。雖然 du 指令是標準工具,但其輸出結果往往冗長且缺乏互動性,難以在海量檔案中迅速找出「元兇」。這時,ncdu (NCurses Disk Usage) 便成為了系統管理員與進階使用者的首選利器。它結合了 du 的計算能力與 ncurses 終端介面,提供了一個流暢、直觀且高度互動的磁碟空間分析體驗。

什麼是 ncdu?

ncdu 是一個輕量級的磁碟空間分析工具,它會掃描指定目錄並計算每個子目錄的大小,然後以樹狀結構呈現。與傳統文字輸出不同,ncdu 允許使用者在終端機中透過鍵盤游標上下移動、進入目錄、刪除檔案,甚至查看檔案詳細資訊。對於伺服器管理而言,這種即時反饋機制能大幅縮短故障排除的時間。

安裝與基本使用

在 Ubuntu 22.04 或 Debian 12 上,安裝 ncdu 非常簡單。由於它不在核心套件庫中,通常位於 universemain 庫內(視發行版而定),我們可以使用 apt 進行安裝:

sudo apt update
sudo apt install ncdu

安裝完成後,只需輸入 ncdu 並指定要分析的目錄即可。若未指定路徑,預設會分析當前目錄。

ncdu /var/log

執行後,您會看到一個黑底綠字的介面。頂部顯示統計資訊,中間列出目錄與檔案,底部則是操作提示。

核心功能與快捷鍵解析

ncdu 的強大之處在於其豐富的快捷鍵系統。以下是幾個最實用的操作:

  1. 瀏覽目錄:使用上下箭頭鍵選擇項目,按 Enter 進入該目錄,按 Backspace 返回上一層。
  2. 排序方式:預設是按大小降序排列。您可以按 s 切換排序依據,例如按名稱(n)、建立時間(t)或修改時間(m)。
  3. 刪除檔案:選取檔案或目錄後,按 d 即可刪除。這對於清理暫存檔或日誌檔極為方便。注意:刪除前請務必確認路徑,避免誤刪重要資料。
  4. 排除特定目錄:在掃描時,若希望忽略某些佔用空間大但不需要分析的目錄(如 /proc/sys),可以使用 -x 選項。
# 掃描 /home 目錄,但不跨越檔案系統邊界
ncdu -x /home

進階應用與輸出格式

除了互動式介面,ncdu 也支援非互動模式,這對於腳本自動化或生成報告非常有用。您可以使用 -o 選項將結果輸出到檔案,然後用瀏覽器打開 HTML 格式的分析報告,這在視覺化呈現上比終端機更直觀。

# 將分析結果輸出到 report.html
ncdu -o /tmp/report.html -x /var

執行後,打開 /tmp/report.html 您會看到一個色彩豐富的網頁圖表,清晰地展示各目錄的空間佔用比例。

另一個實用的選項是 -e,它允許您指定排除的目錄列表,這比手動輸入 -x 更靈活,特別是在需要排除多個特定路徑時。

# 使用排除清單檔案
echo "/tmp" > exclude.txt
echo "/var/cache" >> exclude.txt
ncdu -E exclude.txt /var

常見問題與解決方案

Q1: 為什麼 ncdu 掃描速度很慢?

ncdu 的速度取決於檔案系統的 I/O 效能。如果您在旋轉硬碟(HDD)上掃描包含數百萬小檔案的目錄(如 /var/lib/docker/home),掃描過程可能會非常緩慢。建議在掃描大型目錄時,使用 ionice 指令降低其優先級,以避免影響其他服務的正常運作:

sudo ionice -c 3 ncdu /var/lib

Q2: 如何以 root 權限掃描系統目錄?

許多系統目錄(如 /etc/var)需要 root 權限才能完整讀取所有檔案的屬性。如果以一般使用者執行,可能會出現大量「Permission denied」錯誤,導致分析結果不準確。請務必使用 sudo

sudo ncdu /

小結

ncdu 以其輕巧、快速且互動性強的特點,成為 Linux 系統中不可或缺的工具。它不僅能幫助您快速識別佔用磁碟空間的元兇,其 HTML 輸出功能更為報告與分享提供了便利。對於經常需要處理磁碟空間問題的 Linux 使用者而言,掌握 ncdu 的使用技巧,絕對能提升日常工作的效率與專業度。下次當您發現磁碟空間告急時,不妨試試這個終端機中的空間清道夫。