测试Linux下删除大量文件的效率

创建50万个测试文件

//创建50万个文件
mkdir /test && cd /test
time for i in $(seq 1 500000);do echo text >>$i.txt;done

real    1m9.177s
user    0m9.731s
sys    0m48.238s


//总大小为2G
du -sh /test/
2.0G    /test/

1.rm删除

time rm -rf *
-bash: /usr/bin/rm: Argument list too long

real    0m1.709s
user    0m1.580s
sys    0m0.123s

文件太多,rm不起作用

2.find删除

time find ./ -type f -exec rm {} \;

real    10m56.698s
user    2m13.203s
sys    8m35.653s

用时10分钟

3.find with delete

time find ./ -type f -delete

real    0m26.757s
user    0m1.222s
sys    0m23.112s

用时26

4.rsync删除

//先建立一个空文件夹test-bak
mkdir test-bak
time rsync -a --delete test-bak/ /test/

real    0m25.440s
user    0m1.364s
sys    0m22.082s

用时25

5.python2.7

import os
import timeit
def main():
    for pathname,dirnames,filenames in os.walk('/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)

用时35秒

6.perl

time perl -e 'for(<*>){((stat)[9]<(unlink))}'

real    0m33.891s
user    0m2.590s
sys    0m28.254s

用时33

系统环境

ucloud 1c2g centos7.7

#使用dd命令测试磁盘读写速度为78.6MB/s
dd if=/dev/zero of=/opt/bigfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 13.668 s, 78.6 MB/s

#使用hdparm测试磁盘读写速度为74.60MB/s
hdparm -t --direct /dev/vda1

/dev/vda1:
 Timing O_DIRECT disk reads: 230 MB in  3.08 seconds =  74.60 MB/sec

50万个文件删除所用时间

rm删除:文件太多,无法删除

find删除:用时10分钟

find with delete删除:用时26秒

rsync删除:用时25秒

python2.7删除:用时35秒

perl删除:用时33秒

rsync删除最快

泡泡吐肥皂o © gitbook.pptfz.top 2021 all right reserved,powered by Gitbook文件修订时间: 秃笔南波湾!!!

results matching ""

    No results matching ""