Linux中du结果比df大

时间:2021-10-01 17:20:31

有时,用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个区块 */