du查看的是文件的真实占用大小,而ls显示的是文件从开始到结尾记录的大小

使用dd命令进行测试:

dd if=/dev/zero bs=4M count=10 of=afile
if  表示输入文件,/dev/zero 输出全0
bs  表示block size,每次拷贝的文件大小,从/dev/zero每次拷贝4M内容,写入afile
count   表示写入多少次,这里将每次读区4M,读取10次,写入afile

>10+0 records in
>10+0 records out
>41943040 bytes (42 MB) copied, 0.0481747 s, 871 MB/s

分别用两个命令查看文件占用大小

du -h afile

>40M     afile

ls -lh afile

>-rw-r--r-- 1 root root 40M May 18 21:59 afile

创建空洞文件

dd if=/dev/zero bs=4M count=10 seek=20 of=afile
seek    表示跳过20个block,即创建80M的空洞文件

>10+0 records in
>10+0 records out
>41943040 bytes (42 MB) copied, 0.0483538 s, 867 MB/s

分别用两个命令查看文件占用大小

du -h afile

>40M     afile

ls -lh afile

>-rw-r--r-- 1 root root 120M May 18 22:03 afile

ls -lh 查看到的文件大小为120M,即dd命令先创建了80M的空洞,再写入了40M的内容

最后修改:2020 年 05 月 18 日
如果觉得我的文章对你有用,请随意赞赏