【发布时间】:2016-10-18 09:12:34
【问题描述】:
我将此 bash 脚本作为 crontab 每小时运行一次。我想将最新的 1,000 张图像保存在一个文件夹中,删除最旧的文件。我不想被 mtime 删除,因为如果没有新文件被上传,我想保留它们,如果图像是 1 天或 50 天,可以保留,我只想在图像 1,001 上传时(最新) image_1 (最旧的)将被删除,循环浏览文件夹以保持 1,000 张静态图像。
这可行,但是在每个小时,到它执行时现在可能有 1,200 个。每隔一分钟运行一次 crontab 似乎有点过头了。一旦文件夹达到 1,001 张图像,它会自动执行,我可以这样做吗?基本上我希望文件夹能够自我扫描并保留最新的 1000 张图像,删除最旧的图像。
#!/bin/sh
cd /folder/to/execute; ls -t | sed -e '1,1000d' | xargs -d '\n' rm
【问题讨论】:
-
添加新文件的方式是什么?
-
是用户上传的图片。这是用于聊天的,当他们上传时,它将作为 username_timestamp(.gif/jpg/png) 上传,laravel php 框架正在通过聊天进行实际的图像上传。所以它是随机的,可能是一分钟 50 张图片,或者一天 50 张图片。编辑:此脚本按时间戳省略最新的 1,000 个文件,然后删除文件夹中剩余的所有内容。
-
如何编写某种 webhook 或本地脚本来检查上传图像后的图像总数?那么当它达到 1000 时触发 shell 命令?会不会太矫枉过正了?
-
这是一个本地脚本。 Webhook 是个好主意。你有另一个本地脚本的建议吗?基本上每个新图像都会运行一个脚本来检查文件夹计数,如果超过 1,000 个运行该脚本?感谢您的回复!