上一篇说到备份,就会遇到一个问题,就是随着备份越来越多,备份目录所占空间越来越大,这时候就需要做下定期清理,具体原则是按我们的备份计划来。比如我们的备份是每天都生成一个备份文件,日备份保留6个月,超过6个月保留一份月备份(如只保留1号的备份,其他做清理)。
假如,备份文件格式是bk20211222.bk,备份目录/bk,脚本文件名autoclean.sh。
思路:date -d可以生成距离今天多少日、月、年的日期,然后抓取6个月前的备份文件名,如果今天是1号,则不删除6个月前的今天的备份,将其重命名类似bk202106.bk。其他日期则删除备份。最后crontab中设置每日凌晨1点整执行这个清理脚本即可。脚本如下:
#!/bin/bash
path=/bk
cd $path
nowdd=$(date %d)
if((nowdd!=1))
then
pre=$(date -d "-6 month" %Y%m%d)
prebk=bk$pre.bk
rm -rf $prebk
else
pre=$(date -d "-6 month" %Y%m%d)
newpre=$(date -d "-6 month %Y%m)
prebk=bk$pre.bk
newprebk=bk$newpre.bk
mv $prebk $newprebk
fi
00 01 * * * /bk/autoclean.sh