Tengo una pregunta sobre la implementación del esquema GFS con bacula en un disco duro (los demonios ya funcionan bien).
Lo que quiero lograr:
Cada medio año quiero una copia de seguridad completa a la que se pueda acceder durante al menos 12 meses -> necesito mantener las copias de seguridad un poco más de 12 meses para que la segunda copia de seguridad completa no sobrescriba la primera. Eso significa que habrá al menos 3 copias de seguridad completas (yo he elegido 18 meses). Continúa así durante días, meses y así sucesivamente. Esquema GFS simple.
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
}
El problema que veo:
es que una copia de seguridad incremental siempre hace referencia a la última copia de seguridad incremental, diferencial o completa y guarda solo los archivos que cambiaron desde entonces. En mi esquema tengo dos copias de seguridad incrementales "diferentes", la diaria y la semanal. El semanal siempre hace referencia al diario, que vino el día anterior, ¿no? Cuando mantengo el semanal durante más de 4 semanas (he elegido 5 semanas) y el diario solo durante más de 10 días (he elegido 14 días), los archivos diarios se eliminarán después de 14 días, pero el mensual todavía hace referencia a ellos. . ¿Entonces habrá un "agujero"?
Descubrí que si sería posible tener múltiples "niveles" de copias de seguridad incrementales, como si pudiera decir que la copia de seguridad incremental semanal hace referencia solo a las copias de seguridad semanales (nivel0) y las copias de seguridad incrementales diarias solo a las diarias (nivel1 ) el problema desaparecería. El mismo problema ocurriría si mantuviera la copia de seguridad completa durante un tiempo breve. Por ejemplo, si la copia de seguridad completa sobrescribe la única existente, no quedará ninguna copia de seguridad completa a la que pueda hacer referencia la copia de seguridad diferencial y pierdo todas las copias de seguridad que hice hasta ese momento.
Lo que encontré:
Busqué en Internet y encontré uncapitulo en la documentacion-bacula: Dice: "Ahora bien, dado que cada uno de estos diferentes tipos de guardados debe seguir siendo válido durante diferentes períodos, la forma más sencilla de hacerlo (y posiblemente la única) es tener un grupo separado para cada tipo de respaldo".
Mis preguntas:
- Básicamente, eso significa que no hay otra solución que los grupos completos, diff y inkr únicos en el capítulo de la documentación de bacula. ¿Es esto correcto?
- Si es incorrecto, ¿cómo puedo lograr mi objetivo con dos grupos incrementales diferentes?
También leí sobre trabajos base en la documentación de bacula, eso no es lo correcto pero va en la dirección correcta.
Muchas gracias por tu tiempo y ayuda leyendo hasta aquí.
Ps: No soy un hablante nativo de inglés y lo siento si cometo errores. Si hay algo que realmente te molesta me gustaría saber de ti para mejorar mi inglés.
Gracias.
Respuesta1
Ya lo he solucionado con la ayuda de la lista de correo de usuarios de bacula. No es posible tener de manera efectiva múltiples grupos incrementales para un solo trabajo. Cambié mi configuración a esto:
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
}
La retención de archivos y trabajos para ese único cliente se establece en la retención de volumen máxima.
-> Retención de archivos = 12 meses, Retención de empleo = 12 meses
También existen copias de seguridad completas virtuales que pueden resultar útiles y se explican con más detalle en: https://www.baculasystems.com/incremental-backup-software/
Una vez más, muchas gracias a todos los miembros de la lista de correo de usuarios de bacula que me ayudaron a resolverlo.