linux上删除文件过慢,Linux上删除大量文件几种方式对比_无味金的博客-程序员宅基地

技术标签: linux上删除文件过慢  

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

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

生成文件:

$ for i in $(seq 500000);do echo 'text' >hello/$i.txt;done

$ du -sh hello

2.0Ghello

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

$ time rm -f *

-bash: /usr/bin/rm: Argument list too long

real0m2.676s

user0m2.340s

sys0m0.272s

2. find查找删除:-exec

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

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

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

real7m16.154s

user0m51.171s

sys5m51.214s

3. find查找删除:xargs

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

real0m17.860s

user0m1.021s

sys0m8.838s

4. find调用-delete删除

$ time find . -type f -delete

real0m16.953s

user0m0.535s

sys0m8.866s

$ time find . -type f -delete

real0m16.221s

user0m0.578s

sys0m8.098s

5. ls和xargs组合删除

$ time ls|xargs -L 10000 rm -f

real0m13.764s

user0m2.856s

sys0m8.630s

$ time ls|xargs -L 5000 rm -f

real0m13.879s

user0m3.053s

sys0m8.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/

real0m15.293s

user0m0.590s

sys0m12.397s

$ time rsync -a --delete blank/ hello/

real0m14.833s

user0m0.590s

sys0m11.977s

$ time rsync -a --delete-before blank/ hello/

real0m14.884s

user0m0.602s

sys0m12.147s

$ time rsync -a --delete-during blank/ hello/

real0m15.468s

user0m0.693s

sys0m12.441s

$ time rsync -a --delete-after blank/ hello/

real0m15.135s

user0m0.600s

sys0m12.253s

总结:

命令

时间

备注

rm

无法删除

...

find + -exec

7m16s

耗费时间太长

find + xargs

17s

时间较短

find + delete

16s

时间较短

ls + xargs

13s

时间短

rsync + delete

15s

时间短

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

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

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

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

linux下软件安装的几种方式

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

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

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

Linux下一次删除百万文件

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

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

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

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

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

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

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

随机推荐

java中接口的定义和接口的实现

1.接口的定义 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interfa ...

iOS 中实现功能引导页面

// //  guideView.h //  07-功能引导-李洪强 // //  Created by vic fan on 16/1/4. //  Copyright 2016年 李洪强. A ...

SQL语句-批量插入表(表数据插表)

批量插入表(表数据插表) ****1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,...) select value1,val ...

Configuration对象

Configuration对象 Hibernate的持久化操作离不开SessionFactory对象,使用该对象的openSession()方法可以打开Session对象.而SessionFactor ...

C++@sublime GDB调试

正文转自:http://www.cppblog.com/lucency/archive/2012/08/09/59214.html 之前在网上搜索了好久使用sublime调试C和C++的文章,但是徒劳 ...

jQuery1.9 $.browser 的替代方法

jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. ...

Asp.Net 母版页

背景:回顾下以前用到过的asp.net控件 介绍: 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局.单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为.然后可以创建 ...

boost准模板库scoped_ptr指针的使用以及auto_ptr智能指针的对照

首先我们看看scoped_ptr的基本使用,包括了swap(),get(),reset()的使用,重要的提醒是作用域结束的时候会自己主动析构,无需手动的释放资源: #include

从Chrome源码看JS Array的实现

.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } .crayon-line spa ...

用 Eclipse 搭建一个简单的 Maven spring mybatis 项目(包含测试用例)

1: 先搭建一个Maven项目: 创建好后的目录: 2: 配置pom.xml文件:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29938387/article/details/116632437

智能推荐

动态代理Proxy_李煊的博客-程序员宅基地

动态代理:个人理解,通过第三方创建你想要的对象,由第三方管理你的对象。且你想执行对象的方法,也会有一个类似于(真正方法执行前和后都有)拦截器的功能,在执行你需要调用的方法的前后做一些操作。需要理解两个类:Proxy:可以理解为第三方,相当于把你想创建的类的外面进行了一个封装,你想创建一个类的实例对象,你告诉Proxy一些类的信息:这个类实现了哪些接口(数组对象),被代理的对象一定要实现某一...

治疗乙肝_fudh_123的博客-程序员宅基地

1)治病必须有胃气  生北山楂100克,广木香50克,猪苓50克,厚朴20克。每日一剂,水煎频饮。  这是乙肝病人应当喝的开胃汤,山楂广木香能提升胃气,增强病人的消化机能;同时必须产生和保持饥饿感,尤其晚饭要少吃,让肠胃得到休息,激发免疫系统活性。人像饿狼你的免疫细胞也像饿狼。  肝炎是湿热内蕴,猪苓、厚朴克服湿热。  如果喝了开胃汤,却出现了口干舌燥、出汗多的阴虚症状,那么就...

python统计字符串中各个字符的个数_AKoalas的博客-程序员宅基地_python统计各类字符个数

str = 'dahdhasjdkalsjdlkajdk'char_dic = {}for i in str: char_dic[i] = str.count(i)# for k, v in char_dic.items():# print(f'字符串中,字母 {k} 有 {v} 个')print(char_dic)

十分详细的Centos7下部署CDH6大数据服务_一个贼会趟坑的队友的博客-程序员宅基地

Centos7下部署CDH6大数据服务CDH集群最少3台机器,生产环境,推荐8台或更多官方安装步骤https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/install_cm_cdh.html环境准备,安装包准备安装包1.python包(centos预装python2.7+)2.mysql-connector-j...

API常用类:StringBuffer类;Math类;Random类_面向c v编程的博客-程序员宅基地

一.Java API概述API(Application Programming Interface)应用程序编程接口 , 是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供给开发人员进行使用帮助说明.二.基本数据类型包装类● Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和 基本数据类型对应的类统称为包装类.● 包装类(如:Integer,

随便推点

android draw速度,android-为什么SystemClock.currentThreadTimeMillis()似乎以一半速度运行?..._weixin_39874196的博客-程序员宅基地

我正在尝试编写一个能够与用户输入同步播放MIDI文件的音乐应用.我已经创建了一个自定义视图,播放声音和读取MIDI数据.我在视图的onDraw()方法中运行MIDI数据的回放,因此可以将用户输入应用于它.音符数据存储为音符音高和演奏时间的数组,从开始算起以毫秒为单位.我的测试数据每500毫秒(半秒)播放一次不同音调的音符.我在每个音符的时间间隔旁记录了currentThreadTimeMillis...

Simple Scalar(一月20日更新)_napx的博客-程序员宅基地

Simple Scalar(下面简称ss)是一个开源的模拟CPU的软件,也是一个折磨我一学期的东西。和Qt类似,这个软件有双重的license,即Non-Commercial和Commercial。也就是说如果用在教育科研上它是免费的,商业上的话收费,不过现在商业的simulator也是非常多,ss跟他们没什么太大的优势。今天我把我所了解的东西分享给大家。SS目录下的东西很多,带main()的文件

java数据结构与算法学习_稀疏数组_鲜肉包的博客-程序员宅基地

稀疏数组当一个数组大部分都为元素0,或为同一个值的数组时,可以使用稀疏数组即将一个原始数组进行压缩保存举例:五子棋下棋中途保存保存方法1.记录原始数组一共有几行几列,有多少个不同的值2.把具有不同值的元素的行列及值的数据记录在一个小规模数组中,从而缩小程序的规模应用场景举例创建一个11*11的棋盘,其中1代表黑子,2代表蓝子,其余地方都可以填充0代替,因此可以创建出一个二维数组用稀疏数组将原始数组压缩,其中第一行第一列:记录原始数组行数第一行第二列:记录 原始数组列数第一行第三列

iOS学习笔记06—Category和Extension_weixin_30241919的博客-程序员宅基地

iOS学习笔记06—Category和Extension一、概述类别是一种为现有的类添加新方法的方式。利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的class添加方法,包括那些没有源代码的类(如某些框架类)。...

Android使用Fragment打造万能页面切换框架(二)_Hank铄的博客-程序员宅基地

private static List> mActivities = newArrayList>(); //所有activity的引用 private Handler mHandler = null; //线程安全的handler private WeakReference mCurrentInstance = null; //当前activity的引用

xv6-lab10-mmap_Wound+=s的博客-程序员宅基地

Lab: mmap实验目标在实验环境中实现 mmap() 系统调用hintschar* mmap(void *addr, int length, int prot, int flags, int fd, int offset);int munmap(void *addr, int length); mmap() 映射的页面应该是 lazy alloc 的,以保证在映射大文件时不会阻塞每个进程应保持对 mmap() 映射的记录。创建一个符合 VMA 要求的

推荐文章

热门文章

相关标签