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天的备份[重复]的主要内容,如果未能解决你的问题,请参考以下文章