你正在比较苹果和橘子.
请注意,ls -s将根据文件中实际数据的长度给出文件的大小.
默认情况下,du命令将提供基于大小的磁盘使用情况.由于磁盘空间是以块的形式分配的,并且文件的长度几乎不是块大小的整数倍,因此最终会得到一个仅部分填充数据但不能被其他文件使用的块.
换句话说,如果文件系统的块大小为512字节,则1字节长度的文件将占用磁盘上的512字节,与511字节的文件相同.一个513字节的文件将占用2个块和1024个字节的磁盘空间.
总和du文件磁盘使用率几乎总是大于ls -s文件文件大小的总和,特别是当你有许多(小)文件和/或非常大的块大小时.
使用du -b开关不会计算块,但行为类似于ls -s:
-b equivalent to --apparent-size --block-size=1
--apparent-size
print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in (‘sparse’) files, internal frag‐
mentation, indirect blocks, and the like
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
du -sh会将块总数转换为人类可读格式,
du -bh将以人类可读的格式打印表观尺寸的总和.
在我的Maildir中,许多小文件有很大不同:
$du -bs cur/
84088436 cur/
$du -s cur/
91800 cur/
$du -sh cur/
90M cur/
$du -bh cur/
81M cur/
编辑关于转换为人类可读输出和兆字节,请不要忽视SI十进制前缀与二进制倍数的人类可读的整体“争议”,1000的幂与1024的幂.
du -h输出中的大写字母M代表1,048,576字节.