Linux下快速删除大量文件

Linux下快速删除大量文件

昨天遇到一个问题,在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

选项说明:递归

  • –delete-before 接收者在传输以前进行删除操做
  • –progress 在传输时显示传输过程
  • -a 归档模式,表示以递归方式传输文件,并保持全部文件属性
  • -H 保持硬链接的文件
  • -v 详细输出模式
  • –stats 给出某些文件的传输状态
相关文章
相关标签/搜索