46

の出力がduしばしばこれほど異なるのはなぜdu -bですか?-bの省略形です--apparent-size --block-size=1。ほとんどの場合、使用するだけ--apparent-sizeで同じ結果が得られますが、--block-size=1うまくいくようです。その場合、出力は正しくても正しいのだろうか、そしてどの番号が欲しいのか?(つまり、別のストレージデバイスにコピーされた場合の実際のファイルサイズ)

4

5 に答える 5

39

見かけのサイズは、アプリケーションがファイル内にあると考えるバイト数です。これは、FTP または HTTP 経由でファイルを送信することにした場合に、ネットワーク経由で転送されるデータの量です (プロトコル ヘッダーはカウントされません)。これは の結果でもありcat theFile | wc -c、 を使用してすべてをロードした場合にファイルが占有するアドレス空間の量ですmmap

ディスク使用量とは、ファイルがそのスペースを占有しているため、他の目的に使用できないスペースの量です。

ほとんどの場合、ディスク使用量はファイルの最後の (部分的な) ブロックのフル サイズをカウントし、見かけのサイズはその最後のブロック内のデータのみをカウントするため、見かけのサイズはディスクの使用量よりも小さくなります。ただし、スパース ファイルがある場合は見かけのサイズが大きくなります (スパース ファイルは、ファイルの末尾を超えてどこかをシークし、そこに何かを書き込むと作成されます。OS は、ゼロで満たされた多数のブロックを作成することを気にしません。 - 書き込むことにしたファイルの一部のブロックのみを作成します)。

于 2011-04-17T16:45:11.170 に答える
2

ファイルとフォルダーには、実際のサイズとディスク上のサイズがあります。

  • --apparent-sizeファイルまたはフォルダの実サイズ

  • ディスク上のサイズは、ファイルまたはフォルダーがディスク上で使用するバイト数です。だけを使用する場合も同じですdu

見かけのサイズがほとんどの場合、ディスクの使用量よりも数桁大きい場合は、内部断片化または間接ブロックを持つファイルの (「スパース」) ファイルがたくさんあることを意味します。

于 2013-11-13T23:08:49.180 に答える
1

デフォルトでは、 du はファイルサイズと同じかそれ以上のディスク使用量を提供するためです。--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
于 2011-04-17T16:32:06.403 に答える