フォルダサイズをカウントするためにdu -bs
を使用しています。
du -bs /folder
結果は96342835in Bytes ...ですので、MB単位は(/ 1024/1024)91,87MBです。
OK、でも私が使うとき
du -hs /folder
結果は異なります。 99MBまたは
du -s taxikondrat.cz/
100980キロバイト=98,61MB
別の方法を試しました。すべてにおいて私は異なる結果を得ました。例えば。
find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
96059200バイトを得たので、91,60MB
ls -ARgo "$@" | awk '{q += $3} END {print q}'
96338739バイトなので、91,87 MBです。丸め後も同じですが、バイト数では少し異なります。
それで、何が本当ですか?なぜこの違いがあり、最も正確なカウントを行う方法は何ですか?
リンゴとオレンジを比較しています。
ls -s
は、ファイル内の実際のデータの長さに基づいてファイルのサイズを与えることに注意してください。
デフォルトでは、du
コマンドは、サイズに基づいたディスク使用量を示します。ディスクスペースはブロック単位で割り当てられ、ファイルの長さがブロックサイズの整数倍になることはほとんどないため、データで部分的にのみ満たされているが、別のファイルでは使用できないブロックが作成されます。
言い換えると、ファイルシステムのブロックサイズが512バイトの場合、1バイトの長さのファイルはディスク上で512バイトを占め、511バイトのファイルと同じです。 513バイトのファイルには、2ブロックと1024バイトのディスク容量が必要です。
合計のdu file
ディスク使用量は、ほとんどの場合、特に多くの(小さい)ファイルや非常に大きなブロックサイズがある場合、ls -s file
ファイルサイズの合計より大きくなります。
du -b
スイッチを使用すると、ブロックはカウントされませんが、ls -s
のように動作します。
-b
--apparent-size --block-size=1
と同等--apparent-size
ディスク使用量ではなく、見かけのサイズを印刷します。見かけのサイズは通常は小さくなりますが、(「スパース」)ファイルの穴、内部フラグメンテーション、間接ブロックなどのために大きくなる可能性があります-h, --human-readable
人間が読める形式の印刷サイズ(1K 234M 2Gなど)
du -sh
は、ブロックの総数を人間が読める形式に変換します。du -bh
は、見かけのサイズの合計を人間が読める形式で出力します。
私のMaildirでは、かなり異なる多くの小さなファイルがあります:
$ du -bs cur/
84088436 cur/
$ du -s cur/
91800 cur/
$ du -sh cur/
90M cur/
$ du -bh cur/
81M cur/
[〜#〜] edit [〜#〜]人間が読める出力とメガバイトへの変換に関しては、全体を見落とさないでください "SIの10進数プレフィックスと2進数の倍数、1000の累乗と1024の累乗で人間が読める形式の論争。
このページの背景については、次を参照してください。 https://www.gnu.org/software/coreutils/manual/html_node/Block-size.html 方法についてGNUユーティリティなどls
およびdu
として表示します。
首都 Mdu -h
の出力は1,048,576バイトを表します。