Bacula-users

[Bacula-users] Incremental only scheduling (was: Re: What new feature are you waiting for?)

2008-11-10 12:54:07
Subject: [Bacula-users] Incremental only scheduling (was: Re: What new feature are you waiting for?)
From: Kjetil Torgrim Homme <kjetilho AT linpro DOT no>
To: bacula-users AT lists.sourceforge DOT net
Date: Mon, 10 Nov 2008 18:51:14 +0100
Erik Logtenberg <erik AT logtenberg DOT eu> writes:

> I would very much like to see the possibility to make only
> incremental backups, no more full backups required. [consolidated
> backups]

I have a wish which sounds similar, but is actually very different.  I
want to avoid having to schedule Full backups.

Bacula has some support in this direction already, ie. it will upgrade
an Incremental or Differential to a Full if there is no previous Full.
I'd like to be able to specify a maximum age for Fulls without having
to prune them.  this should be a pretty simple fix, really, just one
new parameter, associated with the Job.  a similar parameter for
Differential should be added for completeness.

to make this work well, I'd also like to move a few parameters from
the Job to the Pool, specifically SpoolData and Compression, since I
think they make more sense there.  I don't want SpoolData for harddisk
based storage, only for tape.  I don't want Compression for tape,
since the hardware compression is good enough and I don't care about
network bandwidth.  in the case of Compression, it is reasonable to
set it in Job, too, so the precedence would be Schedule > Job > Pool.
I don't see any compelling reason for configuring SpoolData in Job,
but of course we'll need to keep it for backwards compatibility, so
the precedence for it would be the same as for Compression.


in addition to age based Full scheduling, it might be useful to
specify when to upgrade to Full (or Differential) based on size of the
data.  the problem is of course that the size of an Incremental can't
be known in advance without traversing the tree on the client
("estimate job"), and this is overhead I don't want to add every
night.  a simpler approximation would be to simply SUM up the size of
the previous Incrementals and upgrade the backup level when it reaches
a pre-set size, either specified in bytes, or as a percentage of the
previous Full (I lean towards the latter).

here's what configuration could look like:

  Schedule {
      Name = "StdSchedule"
      Run = Level=Incremental Pool=incr-pool FullPool=full-pool 
DifferentialPool=diff-pool at 23:00
  }

  JobDefs {
      Full Backup Interval = 30d
      Differential Backup Interval = 7d
      Upgrade Incremental To Full = 90%
      Upgrade Incremental To Differential = 50%
      ...
  }

(the option names may need some work :-)

the example would make daily Incrementals, one Full backup per month
and one Differential backup per week, but more often if data changes a
lot.  Upgrade Incremental To Differential would SUM the JobBytes for
jobs since last Differential or Full (whichever was run last), while
Upgrade Incremental To Full would add the JobBytes for the most recent
Differential (if applicable) on top of that.


any comments?  I might write a patch to do this, at least the first
two directives, so let me hear it if you think it should be done
differently :-)

-- 
regards,          | Redpill  _
Kjetil T. Homme   | Linpro  (_)


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users