天天看點

關于大量檔案的copy,delete操作方式效率初探

    拷貝大量檔案時,用cp有諸多不便(例如指令意外中斷後,無法續傳;如果強行覆寫的話,又會浪費時間;不覆寫的話,倒是可以通過echo "n"|cp -r /source /destination來完成,但是經過我的實驗,在大量檔案下,傳遞n給cp的覆寫提示也會時間延遲,是以對于已經存在的檔案同樣存在時間上的浪費)

rsync 擁有很多特性,可以避免上面提到cp的種種不便,但是考慮到操作大量檔案,就不得不考慮效率

下面是對大量檔案的拷貝、删除操作,基于cp、rm -rf、rsync三種方式的效率對比

實驗過程拷貝47G的資料(大小基本分散在25M以下檔案數量11041個)

一、拷貝

    1、通過cp方式

    time cp -rp -v /app/glusterfs/NetworkDisk /home/

    real    16m29.876s

    user    0m0.889s

    sys     1m59.575s

    2、rsync方式

    time rsync -av /app/glusterfs/NetworkDisk /home/

    real    16m34.557s

    user    8m53.267s

    sys     4m56.069s

二、删除

    1、通過rm -rf

    time rm -rf /home/NetworkDisk

    real    0m3.341s

    user    0m0.002s 

    sys     0m3.297s

    2、通過rsync --delete

    rsync -a --delete /empty /home/NetworkDisk

    real    0m1.709s

    user    0m0.014s

    sys     0m1.573s

通過以上對比:

    貌似在複制速度上,兩者不相上下

    而在删除操作上,我們看到rsync --delete 比rm -rf快了約2s。

    為了得出更可信的結果,我又做了針對10W小檔案的操作對比,如下

    首先生成10W小檔案

    for i in {1..100000};do dd if=/dev/zero of=/app/test/$i bs=100k;done

    1、time cp -rp -v /app/test /home/

    real    6m21.137s

    user    0m1.848s

    sys     0m34.099s

    2、rsync -av /app/test /home/、

    real    3m56.437s

    user    1m53.502s

    sys     1m21.125s

    1、rm -rf /app/test

    real    0m4.527s

    user    0m0.143s

    sys     0m4.339s

    2、rsync -a --delete /empty /app/test

    real    0m0.122s

    user    0m0.000s

    sys     0m0.009s

通過以上對10W小檔案的操作,可以得出結論,對于大量檔案的拷貝、删除操作,rsync相比較cp和rm還是有很大優勢的

最後附上一篇相關文章

<a href="http://www.linuxeden.com/html/news/20130613/140243.html" target="_blank">http://www.linuxeden.com/html/news/20130613/140243.html</a>

     本文轉自kai404 51CTO部落格,原文連結:http://blog.51cto.com/kaifly/1437539,如需轉載請自行聯系原作者