Linux下刪除海量小檔案最快方法

2021-10-14 15:27:25 字數 2100 閱讀 6621

測試一下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無止境的掃瞄,同步進度難以...