「du」の異なるユニットパラメータが矛盾する結果を与えるのはなぜですか?


2

ウォークマンで使用しているスペースの総量を確認すると、この出力が表示されます。

david@Milton:/media$ du -b --max-depth=0 WALKMAN/
14823290693 WALKMAN/
david@Milton:/media$ du -k --max-depth=0 WALKMAN/
14523776    WALKMAN/

最後に確認したのは、14,523,776 KB * 1024 = 14,872,646,624 Bではありません14,823,290,693 B。2つを分割すると、それらの「K」単位は、宣伝されているほど1020.62ではなく、約に等しいよう1024です。これにより、ウォークマンを同期するために作成したプログラムにいくつかのエラーが発生しているため、予想よりも早くいっぱいになります。誰でもこの矛盾を説明できますか?

回答:


3

du -bは、ヘルプドキュメント(du --help)で次のように説明されています。

  -b, --bytes           equivalent to `--apparent-size --block-size=1'

どこで

      --apparent-size   print apparent sizes, rather than disk usage; although
                      the apparent size is usually smaller, it may be
                      larger due to holes in (`sparse') files, internal
                      fragmentation, indirect blocks, and the like

対照的に、du -kは以下を提供します

  -k                    'like --block-size=1K'

つまり、du -kはファイルのディスク使用量を示し、du -bはファイルの「見かけのサイズ」を示します。見かけのサイズは通常(常にではありませんが)小さくなります。

(出典:coreutilsバグレポート)。


また、ウォークマンのディスク使用量を確認する場合、見かけのサイズではなく実際のサイズが必要になることはほぼ間違いありません。
クラウディウス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.