如何快速的删除大量文件

参考链接:

  http://unix.stackexchange.com/questions/96935/faster-way-to-delete-large-number-of-files

  http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux

试验场景:生成5000个1MB大小的文件,然后用find删除。

看结果说话:

[user@host test]$ for x in `seq 1000`; do dd if=/dev/zero of=$x.dd count=1 bs=1MB 2>/dev/null; done
[user@host test]$ time find . -type f -name "*.dd" -exec rm -rf {} \;

real    0m1.590s
user    0m0.120s
sys     0m1.125s
[user@host test]$ 
[user@host test]$ for x in `seq 1000`; do dd if=/dev/zero of=$x.dd count=1 bs=1MB 2>/dev/null; done
[user@host test]$ time find . -type f -name "*.dd" -delete 

real    0m0.387s
user    0m0.002s
sys     0m0.385s
[user@host test]$ 
[user@host test]$ for x in `seq 1000`; do dd if=/dev/zero of=$x.dd count=1 bs=1MB 2>/dev/null; done
[user@host test]$ time find . -type f -name "*.dd" -exec rm -rf {} + 

real    0m0.387s
user    0m0.001s
sys     0m0.385s
[infa@wltscj1 test]$ 
[infa@wltscj1 test]$ for x in `seq 5000`; do dd if=/dev/zero of=$x.dd count=1 bs=1MB 2>/dev/null; done
[infa@wltscj1 test]$ time find . -type f -name "*.dd" -delete 

real    0m2.176s
user    0m0.014s
sys     0m2.140s
[user@host test]$ 
[user@host test]$ for x in `seq 5000`; do dd if=/dev/zero of=$x.dd count=1 bs=1MB 2>/dev/null; done
[user@host test]$ time find . -type f -name "*.dd" -exec rm -rf {} +

real    0m2.038s
user    0m0.012s
sys     0m2.020s
[user@host test]$ 

结论,下面这种写法效率相对较高些:

find [OPTIONS] -exec rm {} +

 

更好的方式:

#创建空白目录
[user@host ~]$ mkdir blank/
#删除test目录下的所有文件:
[user@host ~]$ time rsync -a --delete-before blank/ test/


real    0m1.906s
user    0m0.010s
sys     0m1.838s
[user@host ~]$

 

转载于:https://www.cnblogs.com/lichmama/p/4081152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值