Backup Regimes with Brackup
After using brackup for a while you find
you have a big list of backups sitting on your server, and start to think
about cleaning up some of the older ones. The standard brackup tool for this
is brackup-target
, and the prune
and gc
(garbage collection)
subcommands.
Typical usage is something like this:
# List the backups for a particular target on the server e.g. TARGET=myserver_images brackup-target $TARGET list-backups Backup File Backup Date Size (B) ----------- ----------- -------- images-1262106544 Thu 31 Dec 2009 03:32:49 1263128 images-1260632447 Sun 13 Dec 2009 08:19:13 1168281 images-1250042378 Wed 25 Nov 2009 06:25:06 977464 images-1239323644 Mon 09 Nov 2009 00:30:34 846523 images-1239577352 Thu 29 Oct 2009 13:03:02 846523 ... # Decide how many backups you want to keep, and prune (delete) the rest brackup-target --keep-backups 15 $TARGET prune # Prune just removes the brackup files on the server, so now you need to # run a garbage collect to delete any 'chunks' that are now orphaned brackup-target --interactive $TARGET gc
This simple scheme - "keep the last N backups" - works pretty nicely for backups you do relatively infrequently. If you do more frequent backups, however, you might find yourself wanting to be able to implement more sophisticated retention policies. Traditional backup regimes often involve policies like this:
- keep the last 2 weeks of daily backups
- keep the last 8 weekly backups
- keep monthly backups forever
It's not necessarily obvious how to do something like this with brackup, but it's actually pretty straightforward. The trick is to define multiple 'sources' in your brackup.conf, one for each backup 'level' you want to use. For instance, to implement the regime above, you might define the following:
# Daily backups [SOURCE:images] path = /data/images ... # Weekly backups [SOURCE:images-weekly] path = /data/images ... # Monthly backups [SOURCE:images-monthly] path = /data/images ...
You'd then use the images-monthly
source once a month, the images-weekly
source once a week, and the images
source the rest of the time. Your list
of backups would then look something like this:
Backup File Backup Date Size (B) ----------- ----------- -------- images-1234567899 Sat 05 Dec 2009 03:32:49 1263128 images-1234567898 Fri 04 Dec 2009 03:19:13 1168281 images-1234567897 Thu 03 Dec 2009 03:19:13 1168281 images-1234567896 Wed 02 Dec 2009 03:19:13 1168281 images-monthly-1234567895 Tue 01 Dec 2009 03:19:13 1168281 images-1234567894 Mon 30 Nov 2009 03:19:13 1168281 images-weekly-1234567893 Sun 29 Nov 2009 03:19:13 1168281 images-1234567892 Sat 28 Nov 2009 03:25:06 977464 ...
And when you prune
, you want to specify a --source argument, and specify
separate --keep-backups settings for each level e.g. for the above:
# Keep 2 weeks worth of daily backups brackup-target --source images --keep-backups 12 $TARGET prune # Keep 8 weeks worth of weekly backups brackup-target --source images-weekly --keep-backups 8 $TARGET prune # Keep all monthly backups, so we don't prune them at all # And then garbage collect as normal brackup-target --interactive $TARGET gcblog comments powered by Disqus