Linux 下删除大量文件效率对比
文章
林里克斯
1.首先建立 50
万个文件
$ mkdir test
$ cd test
$ for i in $(seq 1 500000);do echo text >>$i.txt;done
$ du -sh test/
2.0G test/
1.rm
删除
$ time rm -rf *
-bash: /usr/bin/rm: Argument list too long
real 0m4.281s
user 0m3.381s
sys 0m0.567s
由于文件数量过多,rm 跟不删除不了。
2.find
删除
$ time find ./ -type f -exec rm {} \;
real 30m15.627s
user 3m30.344s
sys 26m10.617s
3.find with delete
$ time find ./ -type f -delete
real 0m13.981s
user 0m0.481s
sys 0m12.926s
用时13s。
4.rsync
删除
$ mkdir rmtest
#首先建立空文件夹 `rmtest`
$ time rsync -a --delete rmtest/ test/
real 0m21.623s
user 0m1.048s
sys 0m18.524s
5.Python
删除
import os
import timeit
def main():
for pathname,dirnames,filenames in os.walk('/home/username/test'):
for filename in filenames:
file=os.path.join(pathname,filename)
os.remove(file)
if __name__=='__main__':
t=timeit.Timer('main()','from __main__ import main')
print t.timeit(1)
1
2
$ python test.py
529.309022903
大概用时 9 分钟。
- Perl删除
$ time perl -e 'for(<*>){((stat)[9]<(unlink))}'
real 0m22.093s
user 0m1.746s
sys 0m19.253s
7、结果:
rm: #文件数量太多,不可用
find with -exec #耗时大概 30 分钟
find with -delete #13s
Perl #22s
Python #9分钟
rsync with -delete #21s
#删除大量小文件可以尝试使用 rsync 和 find with -delete
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1202 0 2020-10-24
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2025-01-18
今日天气
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:14条
- 本站总访问量 365605 次
@svmuvwpuqi 真棒!
@smdxydrauu 博主太厉害了!
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...