----- "Gerald Brandt" <gbr AT majentis DOT com> wrote:
> Hi, > > I have a situation where I need a 'strict' backup schedule. > > Our accounting data must be backed up daily, with weekly fulls on Friday and Monthly fulls on the last day of the month. Have mid-week and every 4 week fulls could mean we lose data. For example, if BackupPC does a weekly full on December 29, that means the next weekly full is January 5th. When the dailies get expired, it would be impossible for us to restore the last 2 days of December. > > In this particular case, we need a backup that is calendar driven, and not driven by BackupPC's concept of 7 days weeks, 4 weeks in a month, etc. > > My current backup is: > > $Conf{FullKeepCnt} = [4, 0, 13, 0, 0, 100]; > > How can I change that (coupled with cron, I assume) so that at the end of the year, I have 12 monthly backups, all on the last day of the month, and the yearly on the last day of the year? > > I really never thought BackupPC's concept of days/weeks/months would be a problem, but now that I think of it, it can be. > > Gerald >
It looks like this is working for me. I have scripts in place and am testing them now.
I basically did everything in bash scripts (since my perl sucks more than my bash scripts). I would've done it in C++, but I wanted the scripts to be very universal.
The difficult part was deleting old backups. Basically, I told BackupPC to delete incrementals as per normal, and I set my FullKeepCnt to 2000. That way, BackupPC itself should never delete any full backups. I then wrote a script that deletes weekly backups older than 10 weeks, unless they land on the last day of the month. I delete monthlys after 15 months, unless thay land on the last day of the year, and I delete yearlys after 4 years.
My bash scripting skills aren't very good, but the scripts are below for all to see. Actually, I think I'll attach 'prune_backups.sh' instead of paste it in here, it's a bit large. If you don't get the attachment and want to see the script, let me know.
If you see any errors or possible improvements, please let me know!
Gerald
This is my crontab:
# # BackupPC : force full backups on Fridays 30 18 * * 5 backuppc /root/backuppc/friday_backups
# BackupPC : force full backups on last day of month 50 18 * * * backuppc /root/backuppc/lastmonthday_backups
# BackupPC : prune full backups on Sundays 0 13 * * 0 backuppc /root/backuppc/prune_backups.sh
These are my scripts:
friday_backups:
#!/bin/bash
# force all hosts in the host file do have a full backup on Friday # unless that Friday is the last day of the month if [ ! $(cal | tr -s '[:blank:]' '\n' |tail -1) = $(date +%d) ] then for HOST in $(cat /etc/backuppc/hosts | grep ^[A-Za-z0-9] | grep -v host | awk '{print $1}') do /usr/share/backuppc/bin/BackupPC_serverMesg backup ${HOST} ${HOST} backuppc 1 # echo ${HOST} done done
lastmonthday_backups:
#!/bin/bash
# force all hosts in the host file do have a full backup on last day of month if [ $(cal | tr -s '[:blank:]' '\n' |tail -1) = $(date +%d) ] then for HOST in $(cat /etc/backuppc/hosts | grep ^[A-Za-z0-9] | grep -v host | awk '{print $1}') do /usr/share/backuppc/bin/BackupPC_serverMesg backup ${HOST} ${HOST} backuppc 1 # echo ${HOST} done done
prune_backups.sh
Description: application/shellscript
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com _______________________________________________
BackupPC-users mailing list
BackupPC-users AT lists.sourceforge DOT net
List: https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki: http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/
|