du と find -ls

du と find -ls

NFS経由でマウントされたリモートファイルシステムを持つSolaris 10サーバーがあります。リモートシステムはNetAppだと思いますが、わかりません。

実行してみるとdf -h <mountpoint>サイズは12T、使用は10T、容量は87%が出ます。

マウントポイントに変更して実行すると、ls -A |xargs du -s約8MBのスペースが確保されます。私はduが再帰的に降りて、すべてのファイルサイズを合計すると予想しましたが、ここではそうではありません。

フェンスとして私は走った

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

答えは13006791645です。 1024^3(1073741824)で割ると約12.1TBになります。

だからfind -lsそれはdfやや一貫性があるようです。なぜそんなにひどく失敗したのですか?

PS:このコマンドはls -A隠しスナップショットディレクトリもインポートしますが、findは何も見つかりません(「ループ検出」を除く)。

ベストアンサー1

du -s512バイトブロックとして報告されます。人間が読めるデータは報告されないため、df -h比較はできません。du

2つの値を比較するには、512バイト単位で報告またはdu -sh <mountpoint>使用/usr/xpg4/bin/df -Pします。df

によるとman du

複数のリンクを持つファイルには、1つの項目のみが計算され作成されます。レポートで選択したカタログ項目が指定されていません。デフォルトでは、ファイルサイズは512バイト単位で記録され、次の512バイト単位に丸められます。

/usr/xpg4/bin/df -P512バイトのレポートを入手してください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

おすすめ記事