duは、ディレクトリサイズがその内容の合計よりはるかに小さいことを報告します。

duは、ディレクトリサイズがその内容の合計よりはるかに小さいことを報告します。

ディレクトリがあり、~/Dそのサイズを探したいです。ただし、実行すると、個々のファイルが増えていることが明らかになりますdu -c ~/D/*。実際に個々のファイルをチェックするとエラーも発生します。出力の最後の行は次のようになります。26880ls -l ~/D26880dudu ~/D/*

256 /home/me/D/lastFile.bin

そして最後の行ls -l ~/D

-rw-r--r-- 1 me myGroup 3124 Aug 24 21:58 lastFile.bin

これは256明らかに同じではありません3124。これがバイナリファイルであることは重要ですか?

編集する:duこれは間の違いに関する質問と重複しませんdfdfこの場合、私には何も提供していないようです。

編集する: stat -c %s ~/D/lastFile.bin出力と一致ls -l

ベストアンサー1

~からマニュアルページ:

   Display values are in units of the first available SIZE from
   --block-size, and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE
   environment variables.  Otherwise, units default to 1024 bytes (or
   512 if POSIXLY_CORRECT is set).

したがって、256kB(またはPOSIX的に正しい場合は128kB)は、複数の3124バイトファイルに十分なスペースを提供します。

GNUを使用すると、duこの-Bオプションを使用して出力の単位サイズを設定できます。デフォルトの印刷サイズであるバイト単位のサイズを取得するには、または-B1-bequals)を使用します。-B1 --apparent-sizels

実際に見られる不一致は、おそらくファイルシステムの記録の異常な点です。少なくともほとんどは、ファイルがブロック全体に割り当てられるという事実です。たとえば、ext4ファイルシステムでは、100000-byteファイルはバイトブロックとして割り当てられている102400ため、実際にバイトを占有します。4096これがdu私のシステムに現れるものです。

--apparent-sizeduオーバーヘッドではなく、ファイルのデータサイズのみが計算されます。

おすすめ記事