我有很多备份,比如:
backup-20130528_054504_mysql.tar.gz,
bill_db_201305290130.BAK.bz2,
etc_20130412.tbz这是每天完成的完整备份。
在此之前,我有一个具有如下命令行的cron任务:
/usr/bin/find /media/backups -ctime +7 -delete但这是个坏主意。
一台服务器7天前停止执行新备份(文件系统已满),所有旧备份都被cron删除。
也许我需要一个新的脚本来代替这个“查找-ctime",它无论如何都会保存一些旧的备份。
我所有的备份文件都有名字{unique_prefix}YYYYMMDD.
我想要这样的东西:
对于每个{unique_prefix}。
所有这些文件都是通过cron通过rsync、ssh等下载到我的服务器的。
我不喜欢重新发明轮子,而且很确定这是一个典型的任务。
请告诉我解决方案。
发布于 2013-05-31 19:08:53
我不同意dawud的观点,认为简单的备份是最好的。
您真正需要的不是一种更聪明的删除东西的方法(虽然这不是个坏主意,但我写了一些类似的东西,只保留了最后的N个备份),而是对您的文件系统进行适当的监视,这样您就会注意到它已经填满了,而且您可以采取行动。这样你就不会丢失你的数据。
发布于 2013-05-31 18:58:35
发布于 2022-08-31 11:10:47
您可以使用基于时间的策略(如果停止生成新的备份,最终会删除所有备份):
find . -type f -name 'app-*.tar.gz' -mtime +100 --delete保存最后X项是安全的:
ls -t app-*.tar.gz | tail -n +100 | xargs --no-run-if-empty rm通过每天/每周/每月/每年的策略你能得到的最好的,这是不容易实现的。你可以试试rsnapshot和cron的运气。
有些库支持删除旧快照,但您需要采用它们的约定:
https://serverfault.com/questions/512195
复制相似问题