Linux下正确删除海量文件的姿势

标签: 技术技巧 linux 删文件 | 发表时间:2017-02-16 10:16 | 作者:歪脖骇客
分享到:
出处:http://www.webhek.com

这里说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件。

最近在优化服务器时发现postfix下的maildrop目录和clientmqueue目录下发现有大量的文件,进入这些目录里使用ls命令是愚蠢的做法,而直接执行 rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的。

那么正确的方法是什么呢?有两种方法可选:
第一种:

find /path/to/directory -type f -exec rm {} \;

第二种:

ls -1 /path/to/directory | xargs -I{} rm {}

上面这两种方法可以成功的删除海量文件,速度也很快。但还有一种更好的方法,比如要删除上面提到的clientmqueue目录,里面全部是一个一个的邮件,用下面的方法:

service sendmail stop
cd /var/spool
mv clientmqueue clientmqueue-todelete
mkdir clientmqueue
chown --reference=clientmqueue-todelete clientmqueue
chmod --reference=clientmqueue-todelete clientmqueue
service sendmail start
rm -rf clientmqueue-todelete

上面的方法是将目录重命名,然后使用了 --reference 引用参数来重建目录,然后删除重命名的目录。直接删除目录的方法速度是十分的快。也可以留着备份不删。更安全。

相关 [linux 正确 删除] 推荐:

Linux下正确删除海量文件的姿势

- - WEB骇客
这里说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件. 最近在优化服务器时发现postfix下的maildrop目录和clientmqueue目录下发现有大量的文件,进入这些目录里使用ls命令是愚蠢的做法,而直接执行 rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的.

Linux应用自动删除n天前日志

- - 操作系统 - ITeye博客
Linux应用总结(1):自动删除n天前日志. linux是一个很能自动产生文件的系统,日志、邮件、备份等. 虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情. 不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧.

在Linux进行IO的正确姿势

- - idea's blog
很多C/C++程序虽然在做网络编程, 但大多用别人封装好的库, 对底层不甚了解, 感觉 IO 操作不是很简单吗. 我敢说, 大多数人进行 IO 的姿势都不对, 所谓的 IO, 主要是 read()/write() 两个函数.. 先说错误的 IO 读操作:. 看起来好像很正确的样子, 返回值也判断了, 不仅判断 -1, 还判断 0, 应该姿势正确吧.

【学习笔记——Linux】Linux下正确关机方法

- - CSDN博客系统运维推荐文章
1.2 通知在线使用者关机时间. 1.1 观察系统使用状态. 联网状态:netstat -a. 后台执行的程序:ps -aux. 1.2 通知在线使用者关机时间. shutdown +2 "The machine will shutdown" # 2min 后关机,并通知在线者.

6个Linux chkconfig命令实例 - 增加,删除,查看和修改services的自动启动选项

- liuce.cn - 博客园-iTech's Blog
翻译自:http://www.thegeekstuff.com/2011/06/chkconfig-examples/. 注意:service的安装目录在/etc/rc.d/init.d下,/etc/init.d 是/etc/rc.d/init.d的链接. chkconfig命令用来安装,查看或修改 services随系统启动的启动选项的设置.

双系统如何正确的删除ubuntu ----清除GRUB在MBR的残留信息

- - CSDN博客推荐文章
估计大部分Linux初学者会遇到把Grub安装到MBR上去了,现在不想用Linux,直接用分区工具把Linux分区给删除了,结果导致系统无法启动,具体恢复方法有很多,但是有的时候也很顽固:. 1、如果能用光盘启动,那么使用光盘启动到dos,使用fdisk /mbr就搞定了. 2、如果不能用用光盘启动,那么用U盘启动(注意启动后C是否是U盘,如果是U盘,那就麻烦了),使用fdisk /mbr没有办法修改实际硬盘的MBR信息,导致无法正常覆盖.

Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

- - CSDN博客数据库推荐文章
1、备份MySQL数据库存放目录/var/lib/mysql下面的vos3000db数据库到/home/mysql_data里面,并且保存为vos3000db_bak_2012_06_30.tar.gz的压缩文件格式(2012_06_30是指备份执行时当天的日期),最后只保留最近7天的备份. 2、上传/home/mysql_data里面的备份文件到远程FTP服务器上,并且只保留最近7天的备份.

Hibernate级联删除

- - CSDN博客推荐文章
如果cascade属性是默认值"none",当hibernate删除一个持久化对象的时候,不会自动删除与它关联的其他持久化对象. 如果希望自动删除它关联的其他持久化对象,可以把casacde属性设为"delete";. 那么hibernate在删除一个Shool对象时,实际执行的SQL是:.

Js删除节点

- - JavaScript - Web前端 - ITeye博客
 方式一:传this参数调用方法:.  方式二:js方法中通过选择器获取节点:. //此处删除的是a节点 }. 方式三:通过jQuery方式获取节点:(尚未测试,有待测试. 此处a标签传this到js中,js通过this(即a节点)取parent(即p节点). (1)p.remove();可直接删除整个p节点.

Javascript 里跑Linux

- rockmaple - Shellex's Blog
牛逼到暴的大拿 Fabrice Bellard,用Javascript实现了一个x86 PC 模拟器,然后成功在这个模拟器里面跑Linux(请用Firefox 4 / Google Chrome 11打开,Chome 12有BUG). 关于这个东西… 伊说 “I did it for fun“,大大啊大大啊….