Linux上删除大量文件几种方式对比

linux上删除大量小文件删除测试:删除500000个小文件测试

生成文件:

$ for i in $(seq 500000);do echo 'text' >hello/$i.txt;done
$ du -sh hello
2.0G hello

1. rm删除:因为文件数量太多,rm无法删除(报错)

$ time rm -f *
-bash: /usr/bin/rm: Argument list too long real 0m2.676s
user 0m2.340s
sys 0m0.272s

2. find查找删除:-exec

-exec: 该参数是将查找的结果文件名,逐个传递给后面的命令执行,如果文件较多,会导致效率较低。

xargs: 该命令是将查找的结果一次性传给后面的命令执行,效率比较高。但是不能操作文件名有特殊字符的文件。

$ time find . -type f -exec rm {} \;

real	7m16.154s
user 0m51.171s
sys 5m51.214s

3. find查找删除:xargs

$ time find . -type f|xargs rm -rf

real	0m17.860s
user 0m1.021s
sys 0m8.838s

4. find调用-delete删除

$ time find . -type f -delete

real	0m16.953s
user 0m0.535s
sys 0m8.866s $ time find . -type f -delete real 0m16.221s
user 0m0.578s
sys 0m8.098s

5. ls和xargs组合删除

$ time ls|xargs -L 10000 rm -f

real	0m13.764s
user 0m2.856s
sys 0m8.630s $ time ls|xargs -L 5000 rm -f real 0m13.879s
user 0m3.053s
sys 0m8.622s

6. rsync delete删除

--delete delete extraneous files from dest dirs
--delete-before receiver deletes before xfer, not during
--delete-during receiver deletes during the transfer
--delete-after receiver deletes after transfer, not during
$ mkdir blank # 建立空文件夹
$ time rsync -a --delete blank/ hello/ real 0m15.293s
user 0m0.590s
sys 0m12.397s $ time rsync -a --delete blank/ hello/ real 0m14.833s
user 0m0.590s
sys 0m11.977s $ time rsync -a --delete-before blank/ hello/ real 0m14.884s
user 0m0.602s
sys 0m12.147s $ time rsync -a --delete-during blank/ hello/ real 0m15.468s
user 0m0.693s
sys 0m12.441s $ time rsync -a --delete-after blank/ hello/ real 0m15.135s
user 0m0.600s
sys 0m12.253s

总结:

命令 时间 备注
rm 无法删除 ...
find + -exec 7m16s 耗费时间太长
find + xargs 17s 时间较短
find + delete 16s 时间较短
ls + xargs 13s 时间短
rsync + delete 15s 时间短

Linux上删除大量文件几种方式对比的更多相关文章

  1. 如何恢复 Linux 上删除的文件,第 1 部分

    来源:http://www.ibm.com/developerworks/cn/linux/l-cn-filesrc/ 原理及普通文件的恢复 要想恢复误删除的文件,必须清楚数据在磁盘上究竟是如何存储的 ...

  2. Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式

    Linux就这个范儿 第18章  这里也是鼓乐笙箫  Linux读写内存数据的三种方式 P703 Linux读写内存数据的三种方式 1.read  ,write方式会在用户空间和内核空间不断拷贝数据, ...

  3. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  4. linux下软件安装的几种方式

    linux下软件安装的几种方式(主要有源码安装, rpm安装, yum安装). 一:源码安装 几乎所有的开源软件都支持在Linux下运行,而这些软件一般都以源码形式发放,只需要Linux安装了gcc. ...

  5. 【转】Linux下软件安装的几种方式

    转自Linux下软件安装的几种方式 Linux 系统的/usr目录 Linux 软件安装到哪里合适,目录详解 Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统 ...

  6. Linux下一次删除百万文件

    Linux下一次删除百万文件 线上环境遇到的一个问题,文件数量过多,执行rm命令报错 # rm -f ./* -bash: /bin/rm: Argument list too long 根据报错检查 ...

  7. Linux服务器删除乱码文件和文件夹的方法

    Linux服务器删除乱码文件和文件夹的方法 首页进入乱码文件所在文件夹由于php大势所趋,所以接触Linux服务器的机会越来越多.不同于Windows服务器,Linux服务器只支持数字.英文等字符,对 ...

  8. 【Linux】多线程同步的四种方式

    背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通过多线程模拟多窗口售票为例: #include <iostream> #include<pthread.h> ...

  9. linux下删除大量文件提示参数过长解决办法

    linux下删除大量文件提示参数过长解决办法:在当前目录下rm -rf * 在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长的错误. 这时可以用find命令 ...

随机推荐

  1. VueJs(11)---vue-router(进阶2)

    vue-router(进阶2) 上篇文章讲了第一篇vue-router相关文章,文章地址:VueJs(10)---vue-router(进阶1) 一.命名路由 有时候,通过一个名称来标识一个路由显得更 ...

  2. Stack和Vector源码分析

    Stack和Vector源码分析 Stack和Vector源码分析stack源码分析1.Stack是什么2.Stack的结构图3.Stack继承关系4.Stack的主要方法5.Stack源码Vecto ...

  3. Http 状态码(status code)常用总结

    本来计划写一篇浏览器错误码使用的详细总结,近来想了想,第一这不是很深入的知识点.主要还是一种规定:第二对常用的几种的一个使用场景已经有所了解了,所以今天就写一个简单的汇总,并黏贴常用几个错误码的介绍在 ...

  4. Java单例模式(Singleton)以及实现

    一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...

  5. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

  6. Code Review Checklist

    左按:当年需要一份详细的代码评审清单作参考,翻译了此文. 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] General Code Smoke Test 通用测试 Comm ...

  7. 如何提高缓存命中率(Redis)

    缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲 ...

  8. Git的思想和基本工作原理2

    那么,简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 Git 的时候,请不要尝试把各种概 ...

  9. left join 后的条件 位置不同,查询的结果不同

    表t_a id name 1 a1 2 a2 表t_b a1_id name num 2 b2 1 3 b3 100 left join 后加查询条件 select a.* from t_a a le ...

  10. Python Selenium 之生成Beautiful可视化报告

    提到自动化测试,少不了自动化生成测试报告,更少不了漂亮的测试报告呀!刚好看到在github上有个大神分享了BeautifulReport,与unittest测试框架完美的结合起来,就能生成Beauti ...