答案1
strace -v -e trace=lstat ls -l file
[...]
lstat("tw.txt", {[...] st_size=1103, [...]
答案2
文件的大小作为文件的一部分存储元数据,以及文件类型(目录/常规/符号链接/…)、时间戳、权限等。应用程序使用以下内容检索此元数据stat
系统调用。元数据存储在文件的索引节点中。
如果文件存储在 SATA 磁盘上,则涉及 SATA 驱动程序,但它的级别比文件系统低得多。考虑 SATA 级别并不能帮助您了解发生了什么,恰恰相反。
文件可能比磁盘还大。文件可以被压缩。大多数文件系统仅支持一种非常简单的压缩形式:稀疏文件,其中大块空字节不存储在磁盘上。报告的磁盘使用情况du
不计算那些省略的块,但报告的文件大小ls
会计算在内。
作为乌普斯·Q·温布利在评论中指出,您发现的尺寸 (36028797019011568) 与完全合理的尺寸 (47600) 有点偏差。因此,这个大小很可能不是合法的稀疏文件,而是磁盘上数据损坏的迹象。在执行其他操作之前,请运行记忆测试。 RAM 是未纠正的单位错误的最大来源。请注意,由于此错误,您可能会出现更多损坏的数据。