I have a question about implementing the GFS-scheme with bacula on a harddrive(the deamons already work fine).
What I want to accomplish:
Every half year i want a full-backup that should be accessable for at least 12months ->
i need to keep the backups a little bit longer around than 12months that the second full backup doesn't overwrite the first one. That means there will be at least 3 full-backups around(I have chosen 18months). It continues like this for days, months and so on. Simple GFS-scheme.
Schedule{
Name = "GGFSCycle"
Enabled = yes
# DailyCycle - the volume is kept for 14 days
Run = Level=Incremental Pool=DailyPool FullPool=HalfAnnualPool Priority=10 tuesday-sunday at 03:00
# WeeklyCycle - the volume is kept for 5 weeks
Run = Level=Incremental Pool=WeeklyPool FullPool=HalfAnnualPool Priority=11 monday at 03:00
# MonthlyCycle - the volume is kept for 7 months
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=12 february-june 1 at 03:00
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=12 august-december 1 at 03:00
# HalfAnnualCycle - the data is kept for 18 months
Run = Level=Full Pool=HalfAnnualPool Priority=13 january 1 at 03:00
Run = Level=Full Pool=HalfAnnualPool Priority=13 july 1 at 03:00
}
Pool {
Name = DailyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "DailyVol_"
Volume Use Duration = 23 hours
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 14 days
Maximum Volume Bytes = 50M # Limit Volume size to something reasonable
Maximum Volumes = 1000 # Limit number of Volumes in Pool
# -> max 50G
}
Pool {
Name = WeeklyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "WeeklyVol_"
Volume Use Duration = 23 hours
Recycle = yes
AutoPrune = yes
Volume Retention = 5 weeks
Maximum Volume Bytes = 500M
Maximum Volumes = 80
# -> max 70G
}
Pool {
Name = MonthlyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "MonthlyVol_"
Volume Use Duration = 2 days
Recycle = yes
AutoPrune = yes
Volume Retention = 7 months
Maximum Volume Bytes = 5G
Maximum Volumes = 80
# -> max 170G
}
Pool {
Name = HalfAnnualPool
Pool Type = Backup
Label Format = "HalfannualVol_"
Storage = backup-server-sd
Volume Use Duration = 3 days
Recycle = yes
AutoPrune = yes
Volume Retention = 18 months #1,5 years
Maximum Volume Bytes = 35G
Maximum Volumes = 20
# -> max 700G
}
The Problem I see:
is that an incremental backup always references the last incremental-, differential- or full-backup and saves only the files that changed since then.
In my scheme i have two "different" incremental-backups, the daily and the weekly one.
The weekly one always references the daily one, that came the day before, right? When i keep the weekly one around for more than 4weeks(i have chosen 5weeks) and the daily one only for more than 10 days(i have chosen 14days) the daily files are going to be deleted after 14days but the monthly one still references them. So there will be a "hole"?
I figured out, if it would be possible to have multiple "levels" of incremental-backups, like i could say that the weekly incremental-backup references only the weekly backups(level0) and the daily incremental-backups only the daily ones(level1) the problem would be gone.
The same problem would occur when i would keep the full-backup for to short around. For example if the full backup overwrites the only existing one there will be no full backup left that the differential-backup could reference and I lose all backups i made to that point.
What I found:
I looked around the internet and found a chapter in the bacula-documentation:
It states:"Now since each of these different kinds of saves needs to remain valid for differing periods, the simplest way to do this (and possibly the only) is to have a separate Pool for each backup type.".
My Questions:
- That basically means that there is no other solution than the single full-,diff-, and inkr-pools in the chapter of the bacula-documentation. Is this correct?
- If it's incorrect, how can i achieve my goal with two different incremental-pools?
I've also read about base jobs in the bacula-documentation, that's not the right thing but it goes in the right direction.
Thank you very much for your time and help reading that far.
Ps: I'm no native english speaker and I'm sorry if i do make mistakes. If there's something that really pisses you of I would like to hear from you to improve my english.
Thank You.