測試一下linux下面刪除大量檔案的效率。
首先建立50萬個檔案
$ test for i in (se
q1500000);
doec
hote
xt
>
>
(seq 1 500000);do echo text >>
(seq15
0000
0);d
oech
otex
t>
>
i.txt;done
1. rm刪除
$ time
rm -f *
zsh: sure you want to delete all the files in /home/hungerr/test [yn]? y
zsh: argument list too long: rm
rm -f * 3.63s user 0.29s system 98% cpu 3.985 total
由於檔案數量過多,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
3. find with delete
$ time
find ./ -type f -delete
find ./ -type f -delete 0.43s user 11.21s system 2% cpu 9:13.38 total
用時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 total
16s,很好很強大。
5. python刪除
import os
import timeit
defmain()
: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.py
529.309022903
大概用時9分鐘。
6. perl刪除
$ time perl -e 'for(<*>)'
perl -e 'for(<*>)' 1.28s user 7.23s system 50% cpu 16.784 total
16s,這個應該最快了。
7、結果:
rm:檔案數量太多,不可用
find with -exec 50萬檔案耗時43分鐘
find with -delete 9分鐘
perl 16s
python 9分鐘
rsync with -delete 16s
結論:刪除大量小檔案rsync最快,最方便。
Linux下使用rsync最快速刪除海量檔案的方法
有的日誌,增長很快,而且沒什麼用。這個時候,我們常用的刪除命令rm fr 就不好用了,因為要等待的時間太長。所以必須要採取一些非常手段。我們可以使用rsync來實現快速刪除大量檔案。1 先安裝rsync yum install rsync 2 建立乙個空的資料夾 mkdir tmp test 3 用...
Linux下使用rsync最快速刪除海量檔案的方法
1 先安裝rsync yum install rsync 2 建立乙個空的資料夾 mkdir tmp test 3 用rsync刪除目標目錄 rsync delete before a h v progress stats tmp test log 這樣我們要刪除的log目錄就會被清空了,刪除的速度...
海量小檔案同步
集中式儲存是目前中小企業廣泛採用的方案,隨著時間的流逝,這些儲存不可避免的膨脹。集中式儲存的弊端愈加顯現,同步就是其中乙個。環境 檔案容量以tb計,裡面是千萬 億級的小檔案,分布在成千上萬的子資料夾內。分析 rsync幾乎是唯一選擇,海量小檔案同步面臨的問題主要是rsync無止境的掃瞄,同步進度難以...