有时,用du查看一个目录所得的结果(占据磁盘空间),比,用df查看该目录所在文件系统的分区总容量还要大。
原因是:du指令回傳的不是文件本身大小,而是文件所佔據的區域的大小,結果會傳回以區塊(通常是512或1024)為單位的數值。
备注:某文件存储在磁盘上时,并非是物理上连续的,会分布在很多区块中,并且可能某区块仅仅有一部分是用于该文件的,也就是说du得到的是该文件在磁盘上分布在多少个区块上,而不是文件本身大小。以-k参数便可以显示区块个数。
示例:以/usr/bin下的chattr文件为例
root@freescale /usr/bin$ ll -h chattr /* 文件实际大小为21.2K */
-rwxr-xr-x 1 root root 21.2K Jun 18 2013 chattr
root@freescale /usr/bin$ ll chattr
-rwxr-xr-x 1 root root 21716 Jun 18 2013 chattr /* 文件实际大小为21716字节,也即实际占用磁盘字节数 */
root@freescale /usr/bin$ du -h chattr
24.0K chattr /* 文件占用磁盘区块大小为24K */
root@freescale /usr/bin$ du chattr
24 chattr /* 我的机器一个区块是1024字节,所以需要24个区块,但这只是表明文件跨越了24个区块,并非实际占满了24个区块 */