我有一个文件夹,它连接到硬件天气记录器。数据非常庞大,我只希望保留最近 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 的更多信息:
答案2
您可以使用logrotate
。它是默认安装的;请查看手册页以获取说明。
答案3
这应该会删除过去一天内修改的所有内容。我建议将其放在每日 cronjob 中。在实施之前一定要进行测试...并记住,由于它按修改日期对文件进行操作,因此它不是特定于文件的(即,如果您修改了 myconfig.ini,下次运行时它可能会杀死您的 myconfig.ini。
find /directory_path -type f -mtime -1 -exec rm{} \;
这显然有一些缺点,但至少是一个好的开始。
答案4
采取略有不同的策略:为什么不设置一个 5 小时频率作业来重命名当前收集目录并创建一个新的当前收集目录?您可以手动或自动处理/存档/删除单个 5 小时目录。