你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
gaosmile 发布时间:2020-4-8 17:10
今天我们来测试一下Linux下面删除大量文件的效率。

( \; @# b0 D4 D- _3 N$ B3 m& S
首先建立50万个文件

  1. 1 ]+ O: \. `* H3 b
  2. $ test   for i in $(seq 1 500000);do echo text >>$i.txt;done
复制代码

. Z. c4 d3 G6 [% `2 t
1.   rm删除
  1. & [6 c% E+ g: f9 e
  2. $ time rm -f *, s8 K. f9 P9 x1 D9 v: ^
  3. zsh: sure you want to delete all the files in /home/hungerr/test [yn]? y9 y$ L( `  l! p
  4. zsh: argument list too long: rm$ c& Q* \  {! ^: X# `8 F7 d- \
  5. rm -f *  3.63s user 0.29s system 98% cpu 3.985 total. z6 L1 U% T! r+ f4 v' ?
  6. 由于文件数量过多,rm不起作用。
复制代码

5 i3 n. y  D5 `# b: j* [
2.  find删除

  1. ! p* O' Q4 {3 y& L" e
  2. $ time find ./ -type f -exec rm {} \;% ~! z5 F% N" O/ k" h2 `2 a/ u" I
  3. find ./ -type f -exec rm {} \;  49.86s user 1032.13s system 41% cpu 43:19.17 total: [1 ]0 B; s6 G  W: G3 E$ Y
  4. 大概43分钟,我的电脑。。。。。。边看视频边删的。
复制代码
0 d" C$ d1 z/ n# B6 s6 P$ M5 Z
3.  find with delete

  1. ' t% k: D" n" L* E: U# b
  2. $ time find ./ -type f -delete0 H, s: G/ m8 Z
  3. find ./ -type f -delete  0.43s user 11.21s system 2% cpu 9:13.38 total
    - H, {: ]+ f- w8 W7 Q7 p0 J
  4. 用时9分钟。
复制代码
0 l$ V. U4 M2 }
4.  rsync删除

  1. : W: ^5 m* i* ~( j$ a3 `
  2. # 首先建立空文件夹blanktest2 o( I( I2 a) j! ^
  3. $ time rsync -a --delete blanktest/ test/
    * A1 ]' A, w3 A$ X; q
  4. rsync -a --delete blanktest/ test/  0.59s user 7.86s system 51% cpu 16.418 total/ r! k0 X7 _2 U. t5 m
  5. 16s,很好很强大。
复制代码

# H* K1 M) h% p& n7 z/ h
5.  Python删除

  1. 6 u/ n- S8 n1 _0 d" z- z
  2. import os% y+ i$ a" @3 O) V; Q7 ]
  3. import timeit
    5 u2 e+ Y; _7 l4 P* e+ o* w
  4. def main():
    & @) d- _$ [& R+ x' U$ {
  5.     for pathname,dirnames,filenames in os.walk('/home/username/test'):
    - M+ k( O  `9 G, |/ u+ ]8 R9 Y
  6.         for filename in filenames:
    4 U  D- M# r; _; U: x& W; B
  7.             file=os.path.join(pathname,filename)8 l( l7 x; q1 E7 P/ A
  8.             os.remove(file)" b" W% x2 z4 W3 U
  9.             * D) S; H7 t& K) L0 d
  10. if __name__=='__main__':
    ' W3 s& c2 [4 h& P6 K
  11. t=timeit.Timer('main()','from __main__ import main')
    ' r8 U5 P0 _  P
  12. print t.timeit(1)  
    ! \$ R1 J! V  W2 @$ p$ s) Z
  13. 14 l# K# I. ~% Y+ Z. \
  14. 2+ f  a* k8 p' h( _; F/ C
  15. $ python test.py
    ; h" [1 R- W$ \( p5 [9 O  b
  16. 529.309022903* Z+ S# R4 X: z3 W# f6 e4 N2 V
  17. 大概用时9分钟。
复制代码

# I; v: t6 |8 Y$ W) _% j3 {
6.  Perl删除
  1. , b8 h) j! Y' a$ |
  2. $ time perl -e 'for(<*>){((stat)[9]<(unlink))}'
    " E' n) A( y9 `5 \: I$ m6 r
  3. perl -e 'for(<*>){((stat)[9]<(unlink))}'  1.28s user 7.23s system 50% cpu 16.784 total
    + s, @9 F5 I' Q$ q3 p1 w% P6 l
  4. 16s,这个应该最快了。
复制代码

% [/ |; P- `' z/ R; x4 k
7、结果:
  1. <font face="Tahoma">& r1 Z7 Z4 ^9 \
  2. rm:文件数量太多,不可用! O! n& G% z' p/ [$ ~. K; i
  3. find with -exec 50万文件耗时43分钟
    2 |4 V0 t6 H3 }
  4. find with -delete 9分钟1 R6 P4 A7 n3 c0 d9 w1 A
  5. Perl  16s# b% D4 h7 Z* I, N  N% \% B" W
  6. Python 9分钟8 e* ]  Q/ T5 \3 Z% M# M6 b
  7. rsync with -delete  16s</font>
复制代码
结论:删除大量小文件rsync最快,最方便。
3 z+ p) D; e0 r! n4 x% ]! i
赞 收藏 评论0 发布时间:2020-4-8 17:10

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版