
df -h
印刷:
Filesystem Size Used Avail Use% Mounted on
/dev/root 59G 6.6G 50G 12% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 9.0M 1.9G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mmcblk0p1 253M 54M 199M 22% /boot
tmpfs 391M 0 391M 0% /run/user/1000
同時ncdu /
列印:
Total disk usage: 1.8 GiB Apparent size: 1.8 GiB Items: 176500
為什麼其中一個報告使用了 6.6+ GiB,而其他報告僅使用了 6.6+ GiB 1.8 GiB
?
答案1
的輸出df
基於檔案系統級統計信息,而ncdu
(以及常規的du
)透過掃描目錄、讀取單一檔案的大小並進行總結來產生結果。
如果du
-style 指令以非 root 使用者身分執行,他們不需要擁有對所有目錄的完全存取權限,因此可能無法看到所有內容(sudo ncdu
在本例中使用)。
嘗試運行du -hs /
並將其結果與 報告的“總磁碟使用量”進行比較ncdu /
。您可能會發現結果相似...並且使用du
,您可能還會看到有關命令無法存取的一堆目錄的訊息,因此無法考慮。可能也是如此ncdu
,但它只是隱藏了錯誤訊息。
另外,在我看來,ncdu
可能還沒有更新來理解現代 Linux 發行版的虛擬檔案系統,並且可能會被它們弄糊塗。在我的 Debian 10 系統上,ncdu /
報告:
Total disk usage: 75.6 GiB Apparent size: 128.1 TiB Items: 469143
就我而言,「表觀尺寸」顯然是無意義且無用的。 「總磁碟使用量」與我得到的大約相同du -hs /
......但因為這包括許多基於 RAM 的虛擬檔案系統(devtmpfs
、tmpfs
),所以這個數字也不太可能非常有用。
但是,如果我將命令限制為僅一個檔案系統(例如ncdu -x /
),我似乎會得到更合理的結果,這也與舍入誤差內的 to 的輸出相匹配,並且還與記住檔案系統可能需要一些空間來儲存它時du -shx /
的輸出相符df -h
另一個可能的錯誤來源是如果您使用進階檔案系統功能(例如 BTRFS 檔案系統快照)。當然,您的根文件系統上可能只有 1.8 GiB 的文件,但如果該文件系統還包含其先前狀態的兩個快照,則使用的磁碟空間總量可能高達文件大小總和的 3 倍你(和任何du
類似的命令)所期望的。
由於該df
命令透過詢問檔案系統驅動程式來獲取其信息,因此它報告的較大「已使用」值可能包括快照,否則快照可能是不可見的,除非使用正確的方法進行存取。