Linux rsync删除大量小文件

如果某个目录下存在几十万个小文件,用普通的rm删除起来非常慢,这时候可以用rsync来删除,下面是两种方式删除的性能测试。

测试场景

在test下生成30万个文件,内容大都是十来个字节。

rm删除大量小文件

$ # 如果直接用rm -f test/*,rm会提示参数太多,报错
$ time rm -rf test
real    0m18.046s
user    0m0.077s
sys 0m3.291s

rsync删除大量小文件

$ time rsync --delete-before -a -H --progress --stats /tmp/test/ test/

real    0m35.437s
user    0m1.662s
sys 0m6.076s

选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
–stats 给出某些文件的传输状态

如果不显示传输过程,速度更快

$ time rsync --delete-before -a -H --stats /tmp/test/ test/
real    0m6.420s
user    0m0.546s
sys 0m3.678s

总结

在存在大量小文件的时候,选择rsync删除(不指定输出详细信息)效率确实比rm高很多。

标签:none