Linux 快速删除百万级文件(rsync命令)
March 25, 2018
当我们想在linux下删除文件的时候,我们会想到通过rm命令来进行删除操作。 而当我们要删除的文件很多的时候,我们会遇到“/bin/rm: Argument list too long“的问题,上一篇文章我们已经介绍了通过find命令或者xargs命令或者自定义shell脚本的方法来避免这种错误。但是如果你想删除几十万或者上百万的文件的话,如果使用之前介绍的方法,效率会很低,删除所需要的时间也会很长。本文会介绍一种通过rsync命令来快速删除大批量文件的方法,并与之前的find命令结合rm命令删除文件的方法进行比较。
Table of Contents
Find命令结合rm 命令删除文件
假如要删除当前目录下的上百万个文件(下面的例子以删除1000个文件做比较),执行下面的命令,并通过time命令来查看find /rm命令组合删除文件所需要的时间, 执行命令如下:
#time find ./ -name * --exec rm –rf {} \;
命令输出如下:
root@devops:~/osetc# time find ./ -name "*.txt" -exec rm {} \;
real 0m0.543s
user 0m0.475s
sys 0m0.062s
通过rsync 命令快速删除百万级文件
首先要创建一个空的目录文件,执行命令:
#mkdir /root/tmp
再通过rsync命令删除当前目录下的大批量文件,执行下面的命令:
#time rsync --delete-before -a -H --stats /root/tmp/ ./
命令输出如下:
root@devops:~/osetc# time rsync --delete-before -a -H --stats /root/tmp/ ./
Number of files: 1 (dir: 1)
Number of created files: 0
Number of deleted files: 1,002 (reg: 1,001, dir: 1)
Number of regular files transferred: 0
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total byes sent: 47
Total bytes received: 13,942
sent 47 bytes received 13,942 bytes 27,978.00 bytes/sec
total size is 0 speedup is 0.00
real 0m0.058s
user 0m0.013s
sys 0m0.022s
root@devops:~/osetc#
从上面两个命令输出的执行时间,我们可以看到find命令运行时间是rsync命令删除文件所需要时间的9倍之多。故而,如果以后我们有这种删除百万级别的文件操作的时候,可以考虑使用rsync命令。
99%的人还阅读了:
0 Comments