Grandfather-Father-Son (GFS) Bacula Strategy Example

The implementation of the classic GFS strategy in “Bacula” takes place through two configurations:

1. At least 03 (three) distinct Pools

At least Daily, Weekly and Monthly Pools need to be created. Obviously, the administrator can call it another way (eg: Daily-Tapes, Weekly-Tapes, Monthly-Tapes), but their function should be the same: host the backups for each retention hierarchy level (daily differentials or incremental backups, weekly differential or full backups, and monthly full backups).


Whoever wants to GUARANTEE that Bacula always uses the same tape for a certain day of the month (eg: VOL1 is always written on Mondays), must create specific Pools for each day of the week (eg: daily_mon, daily_tue etc.). Note that this is only useful if you are working with a manual tape drive and the operator does not have access to the Bacula console to know which tape to insert.

To create a new pool, just duplicate any one of the existing Pool settings as a template (usually “Default”), and change its name. Don’t forget to configure it (retention time, volume usage time, recycling – “yes/no”, etc.). That is made by editing the bacula-dir.conf file or via GUI.

Traditional GFS requires that one backup of the lower hierarchy (eg Daily) cannot be recycled (overwritten) while the higher hierarchy one (e.g. Weekly) is not performed. Therefore, the minimum VolumeRetention values for these Pools, are:

  • Daily: 1 week.
  • Weekly: 1 month.
  • Monthly: 2-12 months (depending on the corporate backup policy).

Some companies even have Yearly Pools, when they need to retain backups for several years.

Of course, these are only minimal values that sacrifice restore granularity (e.g. the ability to restore the specific version of a file from a  given day in the past), in order to save backup storage space or media. Some companies, for example, prefer to retain daily backups for two weeks, or even more. After that, anyway, the customer that needs a restore will need to work with the file version from a weekly or monthly backups, which can be one week or one month dated, respectively. Nevertheless, it is not common for a customer file to need very specific versions of a file after a while, since he would already be able to detect problems or inconsistencies on it before the restoration demand.

2. Schedule

The Schedule is also configured in bacula-dir.conf. You must associate a “Job” created in this file with a schedule. Therefore, we recommend creating a new Schedule (e.g. gfs_schedule) and associating it with backup Jobs.

Schedule {
  Name = gfs_schedule
  Run = Level=Differential  Pool=Daily     Monday-Thursday at 19:00
  Run = Level=Full          Pool=Weekly    2nd 3rd 4th 5th Friday at 19:00
  Run = Level=Full          Pool=Monthly   1st Friday at 19:00

In the example, we will have daily backups from Monday to Thursday, weekly on the 2nd, 3rd, 4th, and 5th Fridays of the month, and monthly on the first Friday of the month.

Disponível em: pt-brPortuguês (Portuguese (Brazil))enEnglish

Leave a Reply