Filesystems

執行 du 命令將無限報告為磁碟使用情況

  • June 9, 2017

我正在嘗試獲取儲存在我的主目錄中的內容的總大小。令我驚訝的是,它會在幾秒鐘後報告無窮大:

/home/user $ du -sh .
Infinity

嗯?我很確定沒有遞歸符號連結,但du預設情況下無論如何都不應該遵循符號連結。我也試過du -shx .,所以它不會跨越設備邊界 - 結果相同。

我很確定我沒有無限的磁碟空間或磁碟使用情況。;-)

目標文件系統是一個沒有快照的 btrfs 子卷。rsync每天晚上將此目錄同步到外部磁碟就好了,這個“無限”沒有問題。但是,du那裡的報告相同。

評論回复:

我的主目錄中沒有掛載點:

$ mount|grep home
/dev/sda3 on /home type btrfs (rw,relatime,compress=lzo,space_cache,autodefrag)

使用完整路徑而不是.作為參數顯示相同的行為。

沒有大於 200GB 的文件:

$ sudo find -size +$((200*1024*1024)) | wc -l
0

我發現了這個錯誤報告,其中使用者在 btrfs 系統上遇到了同樣的問題。事實證明,問題來自一個特定.xml文件,其大小被錯誤地報告為 16 艾字節。

對於送出錯誤的人來說,問題是文件系統損壞,問題通過將所有文件移動到/tmp(這是一個 tmpfs)、刪除原件然後再次複製回來來解決:

mkdir /tmp/foo &&
cp -rv ~/* /tmp/foo &&
rm -r ~/* &&
mv /tmp/foo/* ~/

引用自:https://unix.stackexchange.com/questions/107953