linux – 文件大小不匹配
报告文件大小差异的原因是什么?
[root@localhost]# ls -lah sendlog -rw-rw-r-- 1 mail mail 1.3T Aug 15 17:30 sendlog [root@localhost]# du -m sendlog 24M sendlog 当服务器的备份因配额问题而失败时,这引起了我们的注意,因此不仅“ls”看到了这个错误的大小. 我想到了“稀疏文件”和“块分配”之类的术语,但我不确定它为什么会发生或背后的真正原因.显然,两个命令检查大小的方式有所不同,我是否总是信任du? 仅供参考,这应该是一个非常标准的邮件日志文件. 解决方法
值之间的差异如下.
来自stat(2)的手册 struct stat { // snip off_t st_size; /* total size,in bytes */ // snip blkcnt_t st_blocks; /* number of blocks allocated */ // snip };
ls报告的大小为st_size,du报告的大小为st_blocks * 512 du报告的值是文件系统/磁盘上文件使用的字节数,ls报告的值是与文件交互时文件的实际大小/长度. (除了使用磁盘使用,du还只计算一次硬件文件) 哪个值是“正确的”取决于上下文.如果你在disk-usage du之后是正确的,如果你想知道文件中有多少字节,那么ls / st_size是正确的. 此外,您可以使用各种选项get,即du( – parent-size)来使用st_size报告的大小,或者可以获得ls(-s)来报告使用的块数. 关于你的日志文件是一个稀疏文件的假设听起来似乎是合理的,但是,我不知道的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |