设置自动从文件夹中删除特定文件的服务

设置自动从文件夹中删除特定文件的服务

我有一个文件夹,它连接到硬件天气记录器。数据非常庞大,我只希望保留最近 5 小时的数据。但是,这个文件夹也有一些配置文件,例如 myconfig.ini。

我如何设置一个自动服务,自动删除文件夹中除少数文件之外的所有文件?

答案1

向 cron添加find命令对您有用吗?

find /path/ -type f -mtime +5 -name '*.log'

您可以添加额外内容来查找您想要的文件。-mtype是日期限制部分,用于查找上次修改时间超过 5 天的文件。您可以将其更改为仅查看创建时间甚至访问时间(如果您未noatime在 fs 上使用)

当你得到正确的文件时,只需坚持-exec rm {} \;到底。你可以使用-delete,但如果一次删除太多文件,它就会崩溃。只有当你确定后才这样做!

当您想要安排它时,su请输入正确的用户帐户(拥有文件的人),然后运行crontab -e。然后您可以写出命令,当您退出时,它将按照您设置的时间表运行。您可以在此处阅读有关 cron 的更多信息:

https://help.ubuntu.com/community/CronHowto

答案2

您可以使用logrotate。它是默认安装的;请查看手册页以获取说明。

答案3

这应该会删除过去一天内修改的所有内容。我建议将其放在每日 cronjob 中。在实施之前一定要进行测试...并记住,由于它按修改日期对文件进行操作,因此它不是特定于文件的(即,如果您修改了 myconfig.ini,下次运行时它可能会杀死您的 myconfig.ini。

find /directory_path -type f -mtime -1 -exec rm{} \;

这显然有一些缺点,但至少是一个好的开始。

答案4

采取略有不同的策略:为什么不设置一个 5 小时频率作业来重命名当前收集目录并创建一个新的当前收集目录?您可以手动或自动处理/存档/删除单个 5 小时目录。

相关内容