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
512
webpファイルのバイト数は非常に小さく見えます。そうですか?
端末で実行すると、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, ...