gpt4 book ai didi

Linux bash 备份脚本 - 12、9、6、3、1 个月

转载 作者:太空狗 更新时间:2023-10-29 11:21:47 26 4
gpt4 key购买 nike

我正在编写一个 bash 备份脚本,到目前为止它运行良好。问题是它很快就会把我的硬盘搞得一团糟。

备份每周在星期日运行。

我愿意:

  • 保存最近的 4 个备份
  • 保存 3 个月前的备份
  • 保存 6 个月前的备份
  • 保存12的备份月龄

现在我该如何实现呢?我想我可以弄清楚如何“检查文件是否存在”,但我无法理解如何删除正确的备份。

备份 3 个月大,到下周将是 3 个月零 1 周大 - 因此被删除..是否有任何我可能忽略的非常简单的方法来解决这个问题......?

提前致谢

最佳答案

如果你给你的备份文件一个很好的命名方案,比如:10.29.15-BACKUP.zip,你总是可以很容易地做到这一点。最简单的方法是,您可以只拥有 2 个单独的文件夹,一个用于每日备份,一个用于存档。

所以在你的 bash 脚本中:

#BACKUP PROCESS HAPPENS HERE, PLACES BACKUP NAMED 10.29.15-BACKUP.zip in /home/User/DailyBackups FOLDER, WHICH WE WILL CALL $CurrentBackup

#Get Date from 3 months ago
ChkDate=`date --date="-3 months" +%m.%d.%y`

#See if this file exists
ls $ChkDate-BACKUP.zip /home/User/BackupArchive/

#If it does exist then copy current backup to BackupArchive Folder and Remove any backups older than 367 days from the BackupArchive Folder
if [[ $? == 0 ]]; then
cp /home/User/DailyBackups/$CurrentBackup /home/User/BackupArchive/$CurrentBackup
find /home/User/BackupArchive/*-BACKUP.zip -mtime +367 -exec rm {} \
fi

#Remove all but the most recent 4 Backups
for i in `ls -t /home/User/DailyBackups/*-BACKUP.zip | tail -n +5`; do
rm "$i"
done

我用 367 来计算 366 天的闰年,以防万一你一年的备份有点偏差,比如 366 天零 1 分钟。

关于Linux bash 备份脚本 - 12、9、6、3、1 个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com