Ich habe eine Frage zur Implementierung des GFS-Schemas mit Bacula auf einer Festplatte (die Daemons funktionieren bereits einwandfrei).
Was ich erreichen möchte:
Jedes halbe Jahr möchte ich ein Voll-Backup, das mindestens 12 Monate lang verfügbar sein soll -> ich muss die Backups etwas länger als 12 Monate aufbewahren, damit das zweite Voll-Backup das erste nicht überschreibt. Das bedeutet, dass mindestens 3 Voll-Backups vorhanden sein werden (ich habe 18 Monate gewählt). So geht es dann weiter für Tage, Monate usw. Einfaches GFS-Schema.
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
}
Das Problem, das ich sehe:
ist, dass ein inkrementelles Backup immer auf das letzte inkrementelle, differentielle oder vollständige Backup verweist und nur die Dateien speichert, die sich seitdem geändert haben. In meinem Schema habe ich zwei „unterschiedliche“ inkrementelle Backups, das tägliche und das wöchentliche. Das wöchentliche Backup verweist immer auf das tägliche Backup vom Vortag, richtig? Wenn ich das wöchentliche Backup länger als 4 Wochen (ich habe 5 Wochen gewählt) und das tägliche Backup nur länger als 10 Tage (ich habe 14 Tage gewählt) behalte, werden die täglichen Dateien nach 14 Tagen gelöscht, aber das monatliche Backup verweist immer noch auf sie. Es entsteht also ein „Loch“?
Ich habe herausgefunden, dass das Problem behoben wäre, wenn es möglich wäre, mehrere „Ebenen“ inkrementeller Backups zu haben, z. B. wenn ich sagen könnte, dass das wöchentliche inkrementelle Backup nur auf die wöchentlichen Backups (Ebene 0) verweist und die täglichen inkrementellen Backups nur auf die täglichen (Ebene 1). Das gleiche Problem würde auftreten, wenn ich das Voll-Backup zu kurz aufbewahre. Wenn beispielsweise das Voll-Backup das einzige vorhandene überschreibt, bleibt kein Voll-Backup übrig, auf das das differenzielle Backup verweisen könnte, und ich verliere alle Backups, die ich bis zu diesem Zeitpunkt erstellt habe.
Was ich fand:
Ich habe im Internet gesucht und fand eineKapitel in der Bacula-Dokumentation: Dort heißt es: „Da nun jede dieser unterschiedlichen Arten von Sicherungen für unterschiedliche Zeiträume gültig bleiben muss, besteht die einfachste (und möglicherweise einzige) Möglichkeit hierfür darin, für jede Sicherungsart einen separaten Pool zu haben.“
Meine Fragen:
- Das bedeutet im Wesentlichen, dass es keine andere Lösung gibt als die einzelnen Full-, Diff- und Inkr-Pools im Kapitel der Bacula-Dokumentation. Ist das richtig?
- Wenn es falsch ist, wie kann ich mein Ziel mit zwei verschiedenen inkrementellen Pools erreichen?
In der Bacula-Dokumentation habe ich auch schon von Basisjobs gelesen, das ist zwar nicht das Richtige, geht aber in die richtige Richtung.
Vielen Dank für Ihre Zeit und Hilfe, die Sie beim Lesen bis hierher verbracht haben.
Ps: Ich bin kein englischer Muttersprachler und es tut mir leid, wenn ich Fehler mache. Wenn es etwas gibt, das Sie wirklich ärgert, würde ich gerne von Ihnen hören, um mein Englisch zu verbessern.
Danke schön.
Antwort1
Ich habe es inzwischen mithilfe der Bacula-User-Mailingliste geklärt. Es ist nicht möglich, mehrere inkrementelle Pools für einen einzigen Job effektiv zu haben. Ich habe meine Einstellungen folgendermaßen geändert:
Schedule{
Name = "GFSCycle"
Enabled = yes
# DailyCycle - the volumes are kept for 40days
Run = Level=Incremental Pool=DailyPool FullPool=HalfAnnualPool Priority=10 daily at 03:00
# MonthlyCycle - the volumes are kept for 7months
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=11 february-june 1 at 03:00
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=11 august-december 1 at 03:00
# HalfAnnualCycle - the volumes are kept 12months
Run = Level=Full Pool=HalfAnnualPool Priority=12 january 1 at 03:00
Run = Level=Full Pool=HalfAnnualPool Priority=12 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 = 40 days
Maximum Volume Bytes = 50M # Limit Volume size to something reasonable
Maximum Volumes = 3000 # Limit number of Volumes in Pool
# -> max 150G
}
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 = 12 months
Maximum Volume Bytes = 35G
Maximum Volumes = 20
# -> max 700G
}
Die Datei- und Auftragsaufbewahrung für diesen einzelnen Client wird auf die maximale Volumenaufbewahrung eingestellt.
-> Dateiaufbewahrung = 12 Monate, Jobaufbewahrung = 12 Monate
Es gibt auch virtuelle Voll-Backups, die nützlich sein können und hier ausführlicher erklärt werden: https://www.baculasystems.com/incremental-backup-software/
Nochmals vielen Dank an alle auf der Bacula-Benutzer-Mailingliste, die mir dabei geholfen haben, es herauszufinden.