duの出力が間違っていますか?


12

私のduコマンドは混乱していると思います。

% du -shc DIR ...
...
6123941496      total

% du -shc DIR ...
...
6.1G    total

% du -sc --si DIR ...
...
6.6G    total

私が与えて試してみたLANG=Cとスプレッドシートの結果をダブルチェック。-hはすでに1000の累乗(--si)を使用して出力しているように見え、-siは間違った答えを出します。正しい答えは、-hの場合は5.7G、-siの場合は6.1Gであると思います。ここで何が起こるのでしょうか?

% du --version
du (GNU coreutils) 8.20
...

% uname -a
Linux XXX 3.9-1-amd64 #1 SMP Debian 3.9.8-1 x86_64 GNU/Linux

3
実際のコマンドを含めてください。何を...表していますか?まったく同じコマンドを2回実行して別の出力を取得したようですが、そうですか?サイズ修飾子の説明を読みましたman duか?
terdon

回答:


18

--apparent-sizeスイッチを使用してテストを繰り返します。

$ du -shc --apparent-size DIR ...

du manページからの抜粋

--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

1
ああ、明らかに-bは '--apparent-size --block-size = 1'と同等です。私は逃しました。「du -shc --apparent-size」を使用すると、5.7Gが正しく表示されるようになりました。ありがとう!
Gerry Lufwansa 2013年

@GerryLufwansa-ええ、別のファイルシステムやマウントされたCIFSファイルシステムでミキシングを開始すると、それは本当に顕著になります。常に-bまたはを使用します--apparent-size
slm

...そして、HSMシステムでは、移行されたファイルが0(または数kBのようなもの)を報告せずに、その違いが非常に大きくなる可能性があります--apparent-size
Ansgar Esztermann 2013年

duMac OS Xに付属するの解決策はありますか?
アレックジェイコブソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.