DebianベースのLinuxでstat 8.13
を使用すると、とりわけ、次のFORMATディレクティブ(--format=
)が提供されます。
--file-system
(-f
)との組み合わせ:
%s
ブロックサイズ(転送を高速化するため)%S
基本ブロックサイズ(ブロックカウント用)質問:正確にはどういう意味ですか?
私の推測では、%s
、%S
は%b
(ブロックで表示)および%B
(ブロックのサイズを表示)に等しく、後者はファイル用で、最初の2つはファイルシステム用。あれは正しいですか?
%S fundamental block size (for block counts)
ファイルシステム上の各ブロックの大きさを示します。ほとんどのファイルシステムでは、これはファイルが占有できる最小のスペースです。各ファイルはこれの倍数を使用します。
例えば、
$ echo > a # create a file containing a single byte
$ du -h a # see how much disk space it's using
4.0K a
$ stat -f -c '%S' . # see what stat thinks the block size is
4096
$ tune2fs -l /dev/mydrive | grep '^Block size'
4096
常にこのように機能するかどうかは100%わかりません。たとえば、512
* 1024
= stat -c %b FILE
の場合、基になるブロックサイズが異なっていても、stat -f -c %S FILE
またはdu --block-size=1 FILE
を出力することも決定できると思います。 。正確な実装はファイルシステムによって異なります。
%s block size (for faster transfers)
大きなファイルをコピーする場合に一度に読み取る必要のあるバイト数を提案します。たとえば、bs
を使用するときにdd
(ブロックサイズ)パラメーターとして使用する必要があるものです。しかし、私がチェックしたシステムでは、値が大きいほど高速である場合でも、常に4096
が出力されます。詳細については、 bsパラメーターのddへの最適値を決定する方法はありますか? を参照してください。
技術的には、この情報(およびstat -f
からのすべての情報)は、statvfs
システムコールから取得されます。
%s
はf_bsize
フィールドに対応し、%S
はf_frsize
です。
したがって、 statvfsのマニュアルページ で始まる正確な意味を調べることができます。
unsigned long f_bsize; /* Filesystem block size */
unsigned long f_frsize; /* Fragment size */