Bacula-users

Re: [Bacula-users] Synthetic to Tape

2010-11-02 19:31:34
Subject: Re: [Bacula-users] Synthetic to Tape
From: "James Harper" <james.harper AT bendigoit.com DOT au>
To: "Mingus Dew" <shon.stephens AT gmail DOT com>, "bacula-users" <bacula-users AT lists.sourceforge DOT net>
Date: Wed, 3 Nov 2010 10:04:51 +1100
> 
> I want to setup "Synthetic" backups and write them to tape. I suspect
that I
> can use the "Next Pool" directive to point to a pool containing tape
volumes.
> My intention is that I will be taking the last Full and subsequent
> Incrementals from the Disk-To-Disk backup jobs and writing them to
tape as a
> Synthetic backup.
> 
> I was wondering if I will be able to restore from the synthetic job,
or
> exactly how a restore from this backup would work.
> 

I do exactly this. My Disk backups are for day to day recovery purposes
(although seldom needed under Windows with all the VSS retention stuff
these days) and the tapes are taken off site for in the event of a total
server room loss recovery situation.

One thing you'll find is that your first VirtualFull backup will be
fine, but the second one will want to use the previous VirtualFull
backup as its starting point (bacula just finds the most recent Full
which includes VirtualFull), which won't work as you can't have two
tapes in the drive at once, even if you wanted to do it that way.

What I do is:

. Full backup of all servers on Saturday night
. Incremental backup of all servers 3 times a day
. VirtualFull (synthetic) backup every weeknight (eg when someone is on
site to change tapes)
. Back up the Catalog to tape every weeknight
. Purge the tape volume from Bacula after Catalog backup

Because I only need the tape in the event of a total server room loss,
purging the volume doesn't present any problems, and in the event of a
disaster I have a copy of the catalog on tape which has all the data I
need.

My "Run After" script for my catalog backup does the purging. It looks
like this:

"
#!/bin/sh
/etc/bacula/scripts/delete_catalog_backup
/usr/bin/mysql --skip-column-names bacula -ubacula -p<password redacted>
<<EOF |
SELECT DISTINCT VolumeName
FROM Job
JOIN Pool
ON Job.PoolId = Pool.PoolId
JOIN JobMedia
ON Job.JobId = JobMedia.JobId
JOIN Media
ON JobMedia.MediaId = Media.MediaId
WHERE Pool.Name = 'Tape';
EOF
while read media
do
  echo Purging $media
  echo "purge volume=$media" | /usr/bin/bconsole >/dev/null 2>/dev/null
done
"

The Pool where my tapes are called is called 'Tape'.

James


------------------------------------------------------------------------------
Achieve Improved Network Security with IP and DNS Reputation.
Defend against bad network traffic, including botnets, malware, 
phishing sites, and compromised hosts - saving your company time, 
money, and embarrassment.   Learn More! 
http://p.sf.net/sfu/hpdev2dev-nov
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users

<Prev in Thread] Current Thread [Next in Thread>