duは時間の経過とともに異なる数字を表示し、ファイルサイズは非合理的に小さくなります。

duは時間の経過とともに異なる数字を表示し、ファイルサイズは非合理的に小さくなります。

Bashスクリプトで、次のようなものを実行します。

set -x
time convert 'cat.png' -quality 100 test.webp
time convert 'cat.png' -quality 100 test.jpeg

du -h test.webp test.jpeg

通常、次のように出力されます。

+ du -h test.webp test.jpeg
512  test.webp
387K test.jpeg

512webpファイルのバイト数は非常に小さく見えます。そうですか?

端末で実行すると、du -h異なるサイズが表示されます。(これはより合理的です)。

表示されてduいないことがわかります。--apparent-sizeデフォルトのストレージサイズ(たとえば、ブロック数にいくつかの要素を掛けます)が、まだ常に同じ決定的な結果を印刷したいと思います。

どうしたの?

答え1

一部のファイルシステムではZFSやBtrfsと同様にdu--apparent-size結果がない時間とともに変化

時間の経過とともに、物理ストレージによってファイルシステムが遅延、再配置、圧縮、重複排除、またはその他の方法で変更されないという保証はありません。

したがって、Plainはduいつでも異なる結果を提供できます。


詳細例:呼び出し時にshowをstrace -v実行すると、du-typeシステムコールから返されたデータがstat最初に表示されます。

newfstatat(AT_FDCWD, "test.webp", { ... st_blksize=131072, st_blocks=1, st_size=464124, ...

すぐに:

newfstatat(AT_FDCWD, "test.webp", { ... st_blksize=131072, st_blocks=1029, st_size=464124, ...

関連情報