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

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

任何帮助将不胜感激

【问题讨论】:

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

标签: bash shell


【解决方案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 天的文件,但我想保留每天的备份。
    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多