du 並尋找 -ls

du 並尋找 -ls

我有一台 Solaris 10 伺服器,它透過 NFS 安裝了遠端檔案系統。我相信遠端系統是 NetApp,但不清楚。

當我運行時,df -h <mountpoint>我得到的大小為 12T,使用了 10T,容量為 87%。

當我更改為掛載點並運行時,ls -A |xargs du -s我得到了大約 8 MB 的空間。我期望 du 遞歸下降並將所有檔案大小相加,但這裡似乎沒有這樣做。

作為對沖,我跑了

find <mountpoint> -ls | awk '{total=total+$7}END{print total}'

答案是 13006791645。

所以看來find -lsdf或多或少是一致的。為什麼你會失敗得如此嚴重?

PS:此指令ls -A也會抓取隱藏的快照目錄,但 find 找不到任何內容(「偵測到循環」除外)。

答案1

du -s以 512 位元組區塊的形式進行報告。由於不報告人類可讀的數據,df -h因此無法進行比較。du

若要比較這兩個值,請使用du -sh <mountpoint>/usr/xpg4/bin/df -Pdf也以 512 位元組為單位進行報告。

根據man du

具有多個連結的檔案將僅針對一項進行計數和寫入。報告中選擇的目錄條目未指定。預設情況下,檔案大小以 512 位元組為單位寫入,向上捨入到下一個 512 位元組單位。

嘗試/usr/xpg4/bin/df -P取得 512 位元組報告df

bash-3.2$ /usr/xpg4/bin/df -P /var
Filesystem            512-blocks        Used   Available Capacity  Mounted on
rpool/ROOT/s10/var
                      1147797504    66061270   954397119     7%    /var

並與du -s

bash-3.2$ du -s /var
65976060        /var

或者比較一下:

bash-3.2$ df -h /var              
Filesystem             size   used  avail capacity  Mounted on
rpool/ROOT/s10x_u11wos_24a/var
                       547G    32G   455G     7%    /var

和:

bash-3.2$ du -hs /var   
  31G   /var

相關內容