Linux如何刪除包含千萬個文件的大目錄

測試目錄:/home/test

模擬寫入3000萬個空文件:

echo test{01..30000000} | xargs touch


結果把inode都給佔滿了:


Linux如何刪除包含千萬個文件的大目錄


耗時8分鐘,就只創建了2200多萬個空文件:


Linux如何刪除包含千萬個文件的大目錄


接下來先說錯誤的刪除方法

rm -rf *.*

Linux如何刪除包含千萬個文件的大目錄

可以看到壓根就沒刪掉

ls | xargs rm -rf


Linux如何刪除包含千萬個文件的大目錄

提示內存已被耗盡


正確的刪除方式:

1.直接刪除父目錄(速度:很慢)

[root@localhost home]# rm -rf test/


Linux如何刪除包含千萬個文件的大目錄

耗時39分鐘

2.使用find命令配合 -delete 選項(速度:最慢!)


Linux如何刪除包含千萬個文件的大目錄

由於是空文件,這裡使用-empty選項,實際應用場景應該使用-size 選項來指定文件大小進行刪除


最快最推薦的方法(速度:極快):

創建一個空文件夾,使用rsync -a --delete選項,將空文件夾內容與目標文件夾進行同步


Linux如何刪除包含千萬個文件的大目錄


總結

rsync是最快的方法,當然如果會使用Perl的話,還可以更快,但是並不是所有人都會,所以介紹一個最容易上手的方法。

學妹本不想介紹rm 和 find 這兩種方法(即慢又不實用),但是為了嚴謹的告訴大家rsync比較好,所以就都貼上測試圖片啦。

希望大家能喜歡學妹的技術分享,轉發分享給更多人叭!


分享到:


相關文章: