欢迎光临
我们一直在努力

Linux快速删除目录中的大量文件

在业务运行时,没有制定日志清除规则,导致在日志目录下保存了大量的日志文件。在使用rm -rf $dir删除旧的日志时,会提示-bash: /bin/rm: Argument list too long,通过ls |xargs rm -rf也可以进行删除,但是会耗费大量的时间。在网上找到一种快速删除大量文件的方法rsync,有点类似MySQL的truncate table。

具体操作方法

  1. # 先创建一个空目录
  2. # 注意:最好是用和被清空目录的所有者(用户)去创建这个空目录,使用的命令会将空目录的权限带过去
  3. mkdir /tmp/empty
  4. # 清除目标目录的文件,不要忘记目录后面的`/`
  5. rsync –delete-before -av /tmp/empty/ /var/log/target/

选项说明

  1. -delete-before 接收者在传输之前进行删除操作
  2. -a 归档模式,表示以递归方式传输文件,并保持所有文件属性
  3. -v 详细输出模式

rsync快的原因

  1. rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复遍历很多次;
  2. rsync删除内容时,建立好新的空目录,替换掉老目录,不需要进行大量的遍历操作。
赞(0) 打赏
未经允许不得转载:运维那些事 » Linux快速删除目录中的大量文件

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏