Linux如何快速删除大量碎小文件?


Linux如何快速删除大量碎小文件?



Linux文件系统容量 分为 大小容量 inode容量 前者限制大小,后者限制数量。


使用df -h,查看大小容量使用情况

使用df -i ,查看inode容量使用情况


当我们遇到文件系统容量爆满,如何快速定位,下边给出答案:



 快速定位 
C1:寻找指定目录最大文件

du -a /data |sort -nr|h e ad -n 10


C2:统计指定目录下文件数:

ls -Rf1 /data |grep '^-' |wc -l

 案  例 

某系统巡检中发现inode空间爆满(df -ih):

通常,监控工具只关注大小容量空间使用情况,很少关注inode空间。


根据上边命令C2定位到问题目录,在该目录下执行ls报错如下:
ls: memory exhausted


在问题目录ls命令已经无法将所有文件列出来。因为ls默认会对文件按首字母排序,而排序过程需要消耗内存,文件非常多的时候,对内存的消耗也非常恐怖。


怎么办呢,可以使用-f1参数,这样就不排序,将文件列表输入到临时文件中。
ls -f1 ./* > ~/clear.log


输出完文件后,产生一个5G的文件:

可见该目录下文件极多,wc -l clear.log统计,得到文件数 约2亿

由于文件过大,无法查看并使用,如下使用split 命令将该文件切分成每一个500Mb。

注:-b 按照大小切分, -n按照制定行数切分


分割后:


编写脚本,按照文件批量删除。


[root@kevin ~]$ cat clear.sh
#!/bin/bash
for i in `cat clear000`
do
rm -rf ./$i
done
echo "complete!"

替换脚本中clear000依次将所有文件删除,完成清理工作。


另一种方案:


说到这里,可能有同学会说,为什么不在问题目录下rm -rf ./* 呢?

这里提一下./*的工作原理,它将目录下所有文件名串接到rm -rf 后边。像这样:

rm -rf a b c d e f ...


如上,这是一条shell指令。不幸的是无论unix,还是linux,都对单条命令长度有最大限制。


 画重点 


       Aix     受参数ARG_MAX限制

                getconf arg_max查询


     Linux    受参数LINE_MAX限制

                getconf line_max查询

这也就是文件太多的时候,为什么rm -rf ./* 会报错的缘故。






About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、CSDN和个人微 信公众号( DB宝)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2020-04-01 06:00 ~ 2020-04-30 24:00 在西安完成

● 最新修改时间:2020-04-01 06:00 ~ 2020-04-30 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客户端扫描下面的二维码来关注小麦苗的微 信公众号( DB宝)及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



请使用浏览器的分享功能分享到微信等