bash脚本通过每天保留1个备份来删除超过7天的备份[重复]

Posted

技术标签:

【中文标题】bash脚本通过每天保留1个备份来删除超过7天的备份[重复]【英文标题】:bash script to delete backups older than 7 days by retaining 1 backup each day [duplicate] 【发布时间】:2015-09-01 15:02:41 【问题描述】:

我们有一个备份策略,每天进行 6 次数据库转储。我们想删除超过 7 天的备份,但我们也想保留每天的单个备份。备份文件格式为 2015_08_09_01_00_01.sql.gz

任何帮助将不胜感激

【问题讨论】:

上次我检查 SO 不是代码编写服务。 ***.com/help/how-to-ask 此链接可以帮助您开始使用此站点:***.com/help/mcve @Matt O'Brien,我没有明确要求编写代码。关于如何解决这个问题的任何想法都会很好。无论如何,感谢您的评论。 【参考方案1】:

尝试了以下命令,效果很好。

find . -mtime +7 -mtime -24 | sort -n > testbackups.txt
sort -u -t_ -k5,5 testbackups.txt > testbackups2.txt
grep -v -x -f testbackups2.txt testbackups.txt > delbackups7.txt
cat delbackups7.txt | while read file ; do rm ~/"$file" ; done

我列出了 7 天到 24 天之间的文件,保留 6 个备份中的一个,然后删除剩余的文件。

【讨论】:

【参考方案2】:

在 Linux Bash 中,您需要类似 /usr/bin/find /PATH/TO/BACKUPS/ -type d -mtime +6 -exec rm -r \ 的内容。这将使用 find 命令在 /PATH/TO/BACKUPS/ 中查找超过 6 天的文件并将其删除。 -type d 用于目录

【讨论】:

这将删除所有超过 6 天的文件,但我想保留每天的备份。

以上是关于bash脚本通过每天保留1个备份来删除超过7天的备份[重复]的主要内容,如果未能解决你的问题,请参考以下文章

每天定时备份mysql数据库任务

Google云端硬盘,在特定文件夹中自动删除超过7天的文件

定时备份mysql数据库任务

MySQL数据库维护

linux监控磁盘情况并自动删除备份文件

MS SQL 2012 维护计划删除我要保留的备份