Linux如何快速刪除大量碎小檔案?

lhrbest發表於2020-04-29


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):

Linux如何快速刪除大量碎小檔案?

通常,監控工具只關注大小容量空間使用情況,很少關注inode空間。


根據上邊命令C2定位到問題目錄,在該目錄下執行ls報錯如下:
ls: memory exhausted


在問題目錄ls命令已經無法將所有檔案列出來。因為ls預設會對檔案按首字母排序,而排序過程需要消耗記憶體,檔案非常多的時候,對記憶體的消耗也非常恐怖。


怎麼辦呢,可以使用-f1引數,這樣就不排序,將檔案列表輸入到臨時檔案中。
ls -f1 ./* > ~/clear.log


輸出完檔案後,產生一個5G的檔案:
Linux如何快速刪除大量碎小檔案?

可見該目錄下檔案極多,wc -l clear.log統計,得到檔案數 約2億

由於檔案過大,無法檢視並使用,如下使用split 命令將該檔案切分成每一個500Mb。

Linux如何快速刪除大量碎小檔案?
注:-b 按照大小切分, -n按照制定行數切分


分割後:

Linux如何快速刪除大量碎小檔案?


編寫指令碼,按照檔案批量刪除。


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

替換指令碼中clear000依次將所有檔案刪除,完成清理工作。


另一種方案:

Linux如何快速刪除大量碎小檔案?


說到這裡,可能有同學會說,為什麼不在問題目錄下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寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。

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

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2689155/,如需轉載,請註明出處,否則將追究法律責任。

相關文章