Bacula - "agujero" del esquema GFS de copia de seguridad del disco

Bacula - "agujero" del esquema GFS de copia de seguridad del disco

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:

  1. 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?
  2. 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.

información relacionada