Linux下刪除大量文件效率對(duì)比


2020年第一波薅當(dāng)當(dāng)網(wǎng)羊毛的機(jī)會(huì),別錯(cuò)過(guò)!
點(diǎn)擊「閱讀原文」查看良許原創(chuàng)精品視頻。
來(lái)自:馬哥Linux運(yùn)維
今天我們來(lái)測(cè)試一下Linux下面刪除大量文件的效率。
首先建立50萬(wàn)個(gè)文件
$ test for i in $(seq 1 500000);do echo text >>$i.txt;done1. ? rm刪除
$ time?rm?-f?*zsh: sure you want to delete all the files in /home/hungerr/test [yn]? yzsh: argument list too long: rmrm -f * 3.63s user 0.29s system 98% cpu 3.985 total由于文件數(shù)量過(guò)多,rm不起作用。
2. ?find刪除
$ time find ./ -type f -exec rm {} \;find ./ -type f -exec rm {} \; 49.86s user 1032.13s system 41% cpu 43:19.17 total大概43分鐘,我的電腦。。。。。。邊看視頻邊刪的。
3. ?find with delete
$ time find ./ -type f -deletefind ./ -type f -delete 0.43s user 11.21s system 2% cpu 9:13.38 total用時(shí)9分鐘。
4. ?rsync刪除
# 首先建立空文件夾blanktest$?time?rsync?-a?--delete?blanktest/?test/rsync -a --delete blanktest/ test/ 0.59s user 7.86s system 51% cpu 16.418 total16s,很好很強(qiáng)大。
5. ?Python刪除
import osimport timeitdef main():for?pathname,dirnames,filenames?in?os.walk('/home/username/test'):for?filename?in?filenames:file=os.path.join(pathname,filename)????????????os.remove(file)????????????if __name__=='__main__':t=timeit.Timer('main()','from __main__ import main')print t.timeit(1)12$ python test.py529.309022903大概用時(shí)9分鐘。
6. ?Perl刪除
$ time perl -e 'for(<*>){((stat)[9]<(unlink))}'perl -e 'for(<*>){((stat)[9]<(unlink))}' 1.28s user 7.23s system 50% cpu 16.784 total16s,這個(gè)應(yīng)該最快了。
7、結(jié)果:
rm:文件數(shù)量太多,不可用find with -exec 50萬(wàn)文件耗時(shí)43分鐘find with -delete 9分鐘Perl 16sPython 9分鐘rsync?with?-delete??16s
結(jié)論:刪除大量小文件rsync最快,最方便。
☆ END ☆
良許個(gè)人微信
添加良許個(gè)人微信即送3套程序員必讀資料
坑位不多,欲加從速
→ 精選技術(shù)資料共享
→ 高手如云交流社群
→朋友圈定期送書
推薦閱讀:
前女友讓我破解植物大戰(zhàn)僵尸!我干脆擼了一款一樣的....翻身舔狗把歌唱呀
將您的Ubuntu終端變成帶聲音的黑客帝國(guó)的屏幕 | 文末贈(zèng)書
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲?。?!
評(píng)論
圖片
表情
