Linux 下删除大量文件效率对比 您所在的位置:网站首页 递归速度慢 Linux 下删除大量文件效率对比

Linux 下删除大量文件效率对比

2023-08-04 05:21| 来源: 网络整理| 查看: 265

今天我们来测试一下Linux下面删除大量文件的效率。

首先建立50万个文件

$ test for i in $(seq 1 500000);do echo text >>$i.txt;done

测试目录:/home/test

模拟写入3000万个空文件:

echo test{01..30000000} | xargs touch

在这里插入图片描述 结果把inode都给占满了:

查看创建的空文件 :

#time find . -type f -empty |wc -l

在这里插入图片描述

rm删除 $ time rm -f * zsh: sure you want to delete all the files in /home/hungerr/test [yn]? y zsh: argument list too long: rm rm -f * 3.63s user 0.29s system 98% cpu 3.985 total 由于文件数量过多,rm不起作用。 或者 #rm -rf *.* #s | xargs rm -rf

在这里插入图片描述 在这里插入图片描述 提示内存已被耗尽。

正确的删除方式:

1.直接删除父目录(速度:很慢)

[root@localhost home]# rm -rf test/

在这里插入图片描述 耗时39分钟

2.使用find命令配合 -delete 选项(速度:最慢!) 在这里插入图片描述 由于是空文件,这里使用-empty选项,实际应用场景应该使用-size 选项来指定文件大小进行删除

最快最推荐的方法(速度:极快):

创建一个空文件夹,使用rsync -a --delete选项,将空文件夹内容与目标文件夹进行同步 在这里插入图片描述

find删除 $ time find ./ -type f -exec rm {} \; find ./ -type f -exec rm {} \; 49.86s user 1032.13s system 41% cpu 43:19.17 total 大概43分钟,我的电脑。。。。。。边看视频边删的。 find with delete $ time find ./ -type f -delete find ./ -type f -delete 0.43s user 11.21s system 2% cpu 9:13.38 total 用时9分钟。

rsync删除

# 首先建立空文件夹blanktest $ time rsync -a --delete blanktest/ test/ rsync -a --delete blanktest/ test/ 0.59s user 7.86s system 51% cpu 16.418 total 16s,很好很强大。

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]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有