昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./*
删除时间慢到不可接受。 Google了一下,查到了一种方法,试用了下确实比单纯使用rm快了一个数量级。linux
1)首先创建一个空白文件夹。bash
mkdir /tmp/empty
复制代码
2)以后使用如下语句便可快速的删除文件。ide
rsync --delete-before -d /tmp/empty/ /the/folder/you/want/delete/
复制代码
原文中说不要忘记文件夹后的 /
ui
rsync
提供了一些跟删除相关的参数spa
rsync --help | grep delete
--del an alias for --delete-during
--delete delete files that don't exist on the sending side
--delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during transfer, not before
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files on the receiving side
--ignore-errors delete even if there are I/O errors
--max-delete=NUM don't delete more than NUM files
复制代码
rsync --delete-before -a -H -v --progress --stats /tmp/test/ log/
复制代码
这样咱们要删除的log目录就会被清空了,删除的速度会很是快。rsync实际上用的是替换原理,处理数十万个文件也是秒删。code
选项说明:递归