加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 文件大小不匹配

发布时间:2020-12-14 02:49:26 所属栏目:Linux 来源:网络整理
导读:报告文件大小差异的原因是什么? [root@localhost]# ls -lah sendlog-rw-rw-r-- 1 mail mail 1.3T Aug 15 17:30 sendlog[root@localhost]# du -m sendlog24M sendlog 当服务器的备份因配额问题而失败时,这引起了我们的注意,因此不仅“ls”看到了这个错误的大
报告文件大小差异的原因是什么?
[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
};

The st_blocks field indicates the
number of blocks allocated to the
file,512-byte units. (This may be
smaller than st_size/512,for example,
when the file has holes.)

ls报告的大小为st_size,du报告的大小为st_blocks * 512

du报告的值是文件系统/磁盘上文件使用的字节数,ls报告的值是与文件交互时文件的实际大小/长度. (除了使用磁盘使用,du还只计算一次硬件文件)

哪个值是“正确的”取决于上下文.如果你在disk-usage du之后是正确的,如果你想知道文件中有多少字节,那么ls / st_size是正确的.

此外,您可以使用各种选项get,即du( – parent-size)来使用st_size报告的大小,或者可以获得ls(-s)来报告使用的块数.

关于你的日志文件是一个稀疏文件的假设听起来似乎是合理的,但是,我不知道的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读