> 做站经验技巧 > CentOS批量删除文件的方法

CentOS批量删除文件的方法

要在Linux下删除海量文件的情况,需要删除数十万个文件。这个是之前的程序写的日志,增长很快,而且没什么用。这个时候常用的删除命令rm -fr * 就不好用了,因为要等待的时间太长。所以必须要采取一些非常手段:可以使用rsync的--delete-before参数来实现快速删除大量文件。

##############################################################
#################### Rsync替换原理,快速删除海量文件 ###########################
####################################################################

1)建立一个空的文件夹:
# mkdir /tmp/test
2)用rsync删除目标目录:
# rsync --delete-before -a -H -v --progress --stats /tmp/test/ /log/
这样要删除的log目录就会被清空了,删除的速度会非常快。rsync实际上用的是替换原理,处理数十万个文件也是秒删。

选项说明:
--delete-before 接收者在传输之前进行删除操作
--progress 在传输时显示传输过程
--a 归档模式,表示以递归方式传输文件,并保持所有文件属性
--H 保持硬连接的文件
--v 详细输出模式
--stats 给出某些文件的传输状态

 

附加详细攻略:

1、rsync的安装及配置,可以自行Baidu,也可以直接在BT软件商城里购买,貌似19.9元

2、命令解释

# rsync --delete-before -a -H -v --progress --stats /tmp/test/ /tmp/test2/

以上命令的效果,就是将/tmp/test/的这个test文件夹,同步到/tmp/test2/下面,会在/tmp/test2/下面自动创建test文件夹。

友情提示:批量删除可以将需要处理的文件放在一个安全的文件夹里。

小编清除30万个文件,大概耗时几分钟,并非网传的十几秒钟那么神奇。但相比用RM的无助,表现好多了。

3、批量处理权限问题

莫名其妙发现文件夹都是root权限,哎!批处理文件夹权限命令如下

chown -R www /tmp/test4/

这批文件大概40G左右,大概耗时二十多分钟吧!

 

由于执行了chown命令,后台会吊起chown,可能带来一系列副作用。例如多次执行chown后,看似中断执行,其实后台还在。因此会导致硬盘的IO大幅度增加。

测试硬盘大文件读取在百M/s以上,但面对小文件速度仅30M左右了。

同样只是个删除操作,高级运维和初级运维的效率相差十万八千里,而且硬盘读写导致IO过高,会带来一系列业务中断的问题。运维的这些经验非常宝贵,希望能和更多师兄师弟们交流学习,高手们发财后往往把经验都丢了,太可惜!

 

CentOS批量删除文件的方法

删除的速度,当然跟主机配置呈正相关的关系。39G数据20kb大小的文件,4核服务器几分钟搞定,1-2核服务器花了将近30分钟。

 

CentOS批量删除文件的方法:等您坐沙发呢!

发表评论

表情
还能输入210个字