linux – 如何在不干扰服务器的情况下删除数百万个文件

linux – 如何在不干扰服务器的情况下删除数百万个文件,第1张

概述我想删除一个nginx缓存目录,我快速清除它: mv cache cache.bakmkdir cacheservice nginx restart 现在我有一个cache.bak文件夹,里面有200万个文件.我想删除它,而不会打扰服务器. 一个简单的rm -rf cache.bak会破坏服务器,即使最简单的HTTP响应在rm运行时需要16秒,所以我不能这样做. 我试过了ionice -c3 我想删除一个Nginx缓存目录,我快速清除它:
mv cache cache.bakmkdir cacheservice Nginx restart@H_419_3@  

现在我有一个cache.bak文件夹,里面有200万个文件.我想删除它,而不会打扰服务器.

一个简单的rm -rf cache.bak会破坏服务器,即使最简单的http响应在rm运行时需要16秒,所以我不能这样做.

我试过了ionice -c3 rm -rf cache.bak,但它没有帮助.服务器有一个硬盘,而不是SSD,可能在SSD上,这些可能不是问题.

我相信最好的解决方案是某种限制,比如Nginx内置缓存管理器的方式.

你怎么解决这个问题?有没有可以做到这一点的工具?

在Ubuntu 16.04上的ext4

解决方法 制作一个像这样的bash脚本:
#!/bin/bashrm -- "$*"sleep 0.5@H_419_3@  

例如,使用名称deleter.sh保存它.运行chmod u x deleter.sh使其可执行.

此脚本删除作为参数传递给它的所有文件,然后休眠0.5秒.

然后,你可以运行

find cache.bak -print0 | xargs -0 -n 5 deleter.sh@H_419_3@  

此命令检索cache.bak中所有文件的列表,并一次将五个文件名传递给删除脚本.

因此,您可以调整一次删除的文件数,以及每次删除 *** 作之间的延迟时间.

总结

以上是内存溢出为你收集整理的linux – 如何在不干扰服务器的情况下删除数百万个文件全部内容,希望文章能够帮你解决linux – 如何在不干扰服务器的情况下删除数百万个文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1044340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存