有效删除数百万个文件夹和文件

Sho*_*als 3 linux filesystems ubuntu-18.04

我有一个带有巨大文件系统的服务器,用于连续写入和读取而不会出现问题,并且需要始终处于活动状态。

我的目标是有一个 cronjob,它根据名称删除空文件夹和文件,并且超过 X 天。显而易见的答案是使用find -name -mtime -delete但它使用了太多的磁盘资源并导致 IO 等待和其他程序由于服务器无响应而错过它们的检查。

是否有任何易于使用的工具可以完成此类工作?也许限制磁盘使用?还有什么我没有想到的?

HBr*_*ijn 5

使用ionice以减少您find命令的优先级,并尽量减少对其他应用程序的影响。

ionice -c 3 find -name -mtime -delete
Run Code Online (Sandbox Code Playgroud)

-c 3是“空闲”类,并且以空闲 io 优先级运行的程序只会在没有其他程序要求磁盘 IO(在定义的宽限期内)时获得磁盘时间。空闲 IO 进程对正常系统活动的影响应该为零。

如果这永远不会发生(可能在看到使用 24x7 的系统上)尝试例如-c 2 -n 7最低的尽力而为优先级