记一次linux rm删除大文件卡死解决办法
由于有用到php thinkphp 系统,目录在存在runtime/cache 缓存文件夹,目录下200个子文件夹,每个文件夹8w个文件,用rm命令删除卡死好几次,导致线上项目用户直接502,这样删除文件体验非常差。
如何解决?
rsync --delete-before具体操作方法:
1、在/runtime/目录下新建一个临时的空目录/temp1/
- mkdir temp1
2、然后通过rsync指令用空文件夹覆盖掉目标文件夹
- rsync --delete-before -d /runtime/temp2/ /runtime/cache/ --直接删除,不会列出详细信息;
当然也可以列出详细信息,但是文件多的话,没必要;列出详细信息的命令也写出来:
- rsync --delete-before -a -H -v /runtime/temp2/ /runtime/cache/ --删除时会列出详细信息
网站缓存目录下面有多少个缓存文件具体也不知道,反正删除完成之后磁盘腾空出来几十G空间,怪不得用rm -rf卡着大半天没反应了。
rsync为什么比rm 删除速度快?主要还是工作原理不一样
1、rm命令删除内容时,会把目录的每个条目逐个删除,需要循环重复N多次,当文件特别多时硬件开销特别大,所以卡;
2、rsync删除内容时,是把建立好新的空目录来替换掉老目录,注意,是替换,基本没开销。