记一次linux rm删除大文件卡死解决办法

由于有用到php thinkphp 系统,目录在存在runtime/cache 缓存文件夹,目录下200个子文件夹,每个文件夹8w个文件,用rm命令删除卡死好几次,导致线上项目用户直接502,这样删除文件体验非常差。

如何解决?

rsync --delete-before具体操作方法:

1、在/runtime/目录下新建一个临时的空目录/temp1/

  1. mkdir temp1

2、然后通过rsync指令用空文件夹覆盖掉目标文件夹

  1. rsync --delete-before -d /runtime/temp2/ /runtime/cache/ --直接删除,不会列出详细信息;

当然也可以列出详细信息,但是文件多的话,没必要;列出详细信息的命令也写出来:

  1. rsync --delete-before -a -H -v /runtime/temp2/ /runtime/cache/ --删除时会列出详细信息

网站缓存目录下面有多少个缓存文件具体也不知道,反正删除完成之后磁盘腾空出来几十G空间,怪不得用rm -rf卡着大半天没反应了。

rsync为什么比rm 删除速度快?主要还是工作原理不一样

1、rm命令删除内容时,会把目录的每个条目逐个删除,需要循环重复N多次,当文件特别多时硬件开销特别大,所以卡;
2、rsync删除内容时,是把建立好新的空目录来替换掉老目录,注意,是替换,基本没开销。