优雅地删除超过 30 天的文件

Kri*_*ian 8 linux command-line find ubuntu

我有一个包含至少 15000 个文件的缓存文件夹。

我试过这个:

find cache* -mtime +30 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

但这让我的服务器负载飞上了天!

有没有更快/更好的解决方案?

或者我可以限制此命令的速度或迭代次数吗?

Woj*_*ech 10

我喜欢用tmpwatch这些东西,这是最后一次修改文件。它很简单,在很多情况下都能很好地工作:

tmpwatch -m 720 /path/to/cache
Run Code Online (Sandbox Code Playgroud)

对于 Ubuntu,请tmpreaper改为检查。

如果要检查上次访问文件的时间,请使用以下命令:

tmpwatch -a 720 /path/to/cache
Run Code Online (Sandbox Code Playgroud)

您不能在使用 noatime 挂载的文件系统上使用 tmpwatch -a。你仍然可以使用 -m

  • @Kristian 改为检查`tmpreaper`。 (2认同)

chi*_*org 6

您可以通过使用避免为每个文件产生一个新进程

find cache* -mtime +30 -delete
Run Code Online (Sandbox Code Playgroud)