ファイルの名目サイズに実際にどれだけのデータがいっぱいになっているかを出力するにはどうすればよいですか?vmtouch
現在のメモリにいくつのファイルがあるかを表示するのと同じです。
私はワークフローを次のようにしたいと思います。
$ fallocate -l 1000000 data
$ measure_sparseness data
100%
$ fallocate -p -o 250000 -l 500000 data
$ measure_sparseness
50%
回避策:du -bsh
とdu -sh
を使用して比較します。
答え1
find
%S
「スパース性」とも呼ばれる形式指定子があります。
%S File's sparseness. This is calculated as (BLOCKSIZE*st_blocks / st_size). The exact value you will get for an ordinary file of a certain length is system-dependent. However, normally sparse files will have values less than 1.0, and files which use indirect blocks may have a value which is greater than 1.0. The value used for BLOCKSIZE is system-dependent, but is usually 512 bytes. If the file size is zero, the value printed is undefined. On systems which lack support for st_blocks, a file's sparseness is assumed to be 1.0.
$ fallocate -l 1000000 data
$ find data -printf '%S\n'
1.00352
$ fallocate -p -o 250000 -l 500000 data
$ find data -printf '%S\n'
0.507904
答え2
そのオプションがない場合、find
70年代以降にUNIXで動作していた方法は次のとおりです。
ls -ls file
これにより、使用された実際のブロック数と記録された最大バイト数が印刷されます。これにより、実際に割り当てられていないまま残っているブロック数を簡単に計算できます。