1、目录为独立文件系统时可直接使用df查看
当目录为空时inode占用3
[root@host1 /]# ls -alR /mnt
total 0
drwxr-xr-x. 2 root root 6 Apr 26 10:32 .
dr-xr-xr-x. 17 root root 224 Apr 21 10:36 ..
[root@host1 /]# df -i | grep mnt
/dev/mapper/xfs_test-xfs_s 256000 3 255997 1% /mnt
在mnt中新建8个目录,并在其中一个目录中新建999个文件,目录和文件均会占用inode,所以inode占用999+8+3=1010
[root@host1 /]# df -i | grep mnt
/dev/mapper/xfs_test-xfs_s 256000 1010 254990 1% /mn
2、目录为非独立文件系统时
方法一:
[root@host1 /]#export dir=/boot
[root@host1 /]#expr $(ls -alR ${dir} | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir} | grep '^[l|s|-]' | wc -l )
306
目录/boot的inode占用应该是 306+3=309
[root@host1 /]# df -i | grep boot
/dev/sda1 524288 309 523979 1% /boot
方法二:
[root@host1 /]#export dir=/boot
[root@host1 /]#expr $(tree -a ${dir} | wc -l) - 3
306
方法三:
[root@host1 /]#export dir=/boot
[root@host1 /]#expr $(rsync -avn /boot /tmp | wc -l) - 5
306
3、对比三种方法的效率
- ls效率最低,需要20s,即使不考虑目录文件(涉及两次ls),也需要10s左右
- rsync次之需要9s左右
- tree效率最高需要6s左右
[root@host1 /]# export dir=/tmp
[root@host1 /]# time expr $(ls -alR ${dir} | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir} | grep '^[l|s|-]' | wc -l )
525709
real 0m10.285s
user 0m4.668s
sys 0m6.161s
[root@host1 /]# time expr $(ls -alR ${dir} | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir} | grep '^[l|s|-]' | wc -l )
525709
real 0m10.125s
user 0m4.440s
sys 0m6.293s
[root@host1 /]# time expr $(ls -alR ${dir} | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir} | grep '^[l|s|-]' | wc -l )
525709
real 0m10.241s
user 0m4.775s
sys 0m6.017s
[root@host1 tmp]# time expr $(tree -a ${dir} | wc -l) - 3
525709
real 0m3.044s
user 0m1.631s
sys 0m1.420s
[root@host1 tmp]# time expr $(tree -a ${dir} | wc -l) - 3
525709
real 0m3.025s
user 0m1.600s
sys 0m1.475s
[root@host1 tmp]# time expr $(tree -a ${dir} | wc -l) - 3
525709
real 0m3.055s
user 0m1.655s
sys 0m1.455s
[root@host1 tmp]# time expr $(rsync -avn ${dir} /tmp | wc -l) - 5
525709
real 0m3.886s
user 0m1.058s
sys 0m4.719s
[root@host1 tmp]# time expr $(rsync -avn ${dir} /tmp | wc -l) - 5
525709
real 0m3.848s
user 0m1.095s
sys 0m4.485s
[root@host1 tmp]# time expr $(rsync -avn ${dir} /tmp | wc -l) - 5
525709
real 0m3.829s
user 0m1.101s
sys 0m4.455s
4、rsync和tree哪个删除文件更快
使用rsync来删除,需要38s
[root@host1 /]# time rsync -av --delete-before /empty/ /tmp/
sent 42 bytes received 9,361,776 bytes 506,044.22 bytes/sec
total size is 0 speedup is 0.00
real 0m18.473s
user 0m0.742s
sys 0m19.293s
使用tree+xargs来删除,需要29s
[root@host1 /]# time tree -afi /tmp | xargs -n 1024 rm -f
real 0m14.336s
user 0m3.146s
sys 0m11.773s
网友评论