查目錄大小用 du、查磁碟剩餘用 df,但兩者數字常不一致。搞懂底層統計差異,才能正確解讀儲存空間報表。
| 指令 | 統計對象 | 包含內容 | 不包含 |
|---|---|---|---|
du (Disk Usage) | 檔案系統使用者可見資料 | 所有檔案、目錄、符號連結實際佔用的區塊總和 | 中繼資料(inode 表、超級區塊、間接區塊、日誌區塊等) |
df (Disk Free) | 檔案系統區塊分配圖 | 已分配區塊總數 = 使用者資料 + 所有中繼資料 | 未分配區塊 |
df > du?# 範例:/tmp 掛載獨立分區
du -s /tmp # 12920 區塊(使用者資料)
df /tmp # 總 57344,剩 42208,已用 = 15136 區塊
差異 = 15136 - 12920 = 2216 區塊 = 中繼資料開銷
空檔案系統也佔用區塊:inode 表、超級區塊、位圖、日誌等。du 看不到,df 算進去。
du:立即反映檔案消失,大小減少df:不釋放空間,直到持有檔案的進程關閉檔案描述符lsof | grep deleted 找出佔用空間的「幽靈檔案」進程| 需求 | 指令 | 說明 |
|---|---|---|
| 顯示目錄大小(人類可讀) | du -sh /path | -s 只顯總計,-h 人類單位 |
| 列出各子目錄大小並排序 | du -h --max-depth=1 /path | sort -hr | 快速找出佔空間大戶 |
| 顯示檔案系統使用率 | df -h | -h 人類單位,含掛載點 |
| 顯示 inode 使用率 | df -hi | 大量小檔案場景必看 |
| 查看當前目錄各檔案大小 | ls -lhS | 按大小降序 |
| 配額查看(啟用 quota 時) | quota -v | 用戶/群組配額 |
sudo apt install ncdu
ncdu /path
# 鍵盤導航:↑↓ 選擇、Enter 進入、d 刪除、g 切換單位、q 退出
比 du | sort 直觀百倍,大目錄分析首選。
df -hi 排除 inode 耗盡,再 ncdu 定位大目錄釐清 du/df 語義,磁碟空間排查不再霧裡看花。