回答:
通常、ディスクの使用状況duに関する情報を表示します(名前の由来です)。それを念頭に置いて
disk usage != sum of file sizes
各ファイルはファイルシステム上で多数のブロックを占有するman mkfs.ext2ためです(例を参照)。これは、非常にまれな状況でのみ、ファイルのディスク使用量が実際のサイズに等しいことを意味します。そのためには、サイズはブロックサイズの正確な倍数でなければなりません。
ファイルシステムブロックは、ファイルの一部を含むボックスと考えることができます。それぞれが1つのファイルの一部のみを含むことができます。
のGNUバージョンについてはdu、--apparent-sizeオプションを確認してください。
ファイルシステムにスパースファイルがある場合、さらに興味深い状況が発生する可能性があります。
actualまたはへの参照を見つけてくださいapparent。(私の更新された説明も参照してください)。
Mac OS XとFinder(Snow Leopardバージョン10.6.8)について私は次のことに気づきました。
bash以下のコード((1)内)で取得します。
BLOCKSIZEて、シェルに環境変数が設定されていない(そして設定されたことがない)と言いたいのですが、両方のバージョン(今のところ少し)をテストしたところ、のデフォルト値$BLOCKSIZEと同じ値が得られました。
#!/usr/bin/env bash
#tab-width:4
du -s "${@:-.}" |awk '{u+=$1}END{ print u*'${BLOCKSIZE:-0512}' }'||exit $? #macosx (xnu)
# gdu -sB${BLOCKSIZE:-4096} "${@:-.}" |awk '{u+=$1}END{ print u*'${BLOCKSIZE:-4096}' }'||exit $? #macports gnu
#!/usr/bin/env bash
#tab-width:4
for a;do find "$a" -type f -print0|xargs -0 stat -f %z |awk '{u+=$1}END{ print u }'||exit $?;done #macosx (xnu)
# for a;do find "$a" -type f -print0|xargs -0 gstat -c %s |awk '{u+=$1}END{ print u }'||exit $?;done #macports gnu
du(1)も(gnu )(1)もgdu拡張属性(xattr)をカウントしないようですそして私はちょうどなければなりませんしゃれ「ファイル名を指定して実行は、パスをし、数学行う」
アウト平和をして、この時間をfo'realおやすみ。
私のUbuntuシステムでは、ext4を使用して du -b file、実際のファイルdu -b dirのサイズをバイト単位で示し、ファイルのサイズをバイト単位で示します+オーバーヘッドは、私の場合、4096バイトの倍数です。
このオーバーヘッドは、ファイルの数が増えるにつれて増加します。
注:ファイルが削除されても、ディレクトリのオーバーヘッドは、ファイルが削除される前の高レベルのままです。
再起動してみて、元に戻るかどうかは確認していませんが、どちらの場合も、ディレクトリのサイズは過去の状況によって異なります。
合計ファイルサイズの正確な値を得るには、各ファイルサイズを集計することが最適なオプションになる場合があります。
次のスクリプトは、すべてのファイルサイズを合計します(バイト単位)。
OS Xの場合、あなたが持っていない場合は-b「ドゥ」のOPTONを、あなたが使用することができますstat...コメント行ショーのUbuntu:代わりに(あなたがそれを持っている場合)。statの代わりにdu -b、
unset total
while IFS= read -r -d $'\0' rf; do
# (( total += $(stat "$rf" | sed -nre 's/^ Size: ([0-9]+).*/\1/p') ))
(( total += $(du -b "$rf" | cut -f 1) ))
done < <(find . -type f -name '*' -print0)
echo $total
coreutils、duasのGNUバージョンを取得するためにインストールできますgdu。そのため、正確には移植可能ではありませんが、OS Xの人々がいくつかのコアユーティリティのGNUバージョンを入手するのに役立つ場合があります。