在基于 Debian 的 Linux 上 - 除其他外 -提供stat 8.13
以下格式指令 ( ):--format=
与--file-system
( -f
)结合:
%s
块大小(用于更快的传输)%S
基本块大小(用于块计数)
问题): 具体是什么意思?
我最好的猜测是%s
,%S
等于%b
(以块显示)和%B
(显示块的大小),其中后者用于文件,前两个用于文件系统。那是对的吗?
答案1
%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
我不能百分百确定它总是这样工作。例如,我希望它也可以决定打印512
or 1024
,即使底层块大小不同,只要stat -c %b FILE
* stat -f -c %S FILE
= du --block-size=1 FILE
。确切的实现取决于文件系统。
%s block size (for faster transfers)
建议在复制大文件时一次应读取多少字节,例如bs
在使用dd
.但在我检查的系统上,它总是打印4096
,即使较大的值可能会更快。看有没有办法确定 dd 的 bs 参数的最佳值?对此进行更多讨论。
从技术上讲,此信息(以及来自 的所有信息stat -f
)来自statvfs
系统调用。
%s
对应于f_bsize
字段,并且%S
是f_frsize
。
所以你可以从以下开始研究它们的确切含义statvfs 手册页
unsigned long f_bsize; /* Filesystem block size */
unsigned long f_frsize; /* Fragment size */