Tenho uma dúvida sobre a implementação do esquema GFS com bacula em um disco rígido (os deamons já funcionam bem).
O que eu quero realizar:
A cada semestre eu quero um backup completo que deve estar acessível por pelo menos 12 meses -> preciso manter os backups um pouco mais de 12 meses para que o segundo backup completo não substitua o primeiro. Isso significa que haverá pelo menos 3 backups completos (escolhi 18 meses). Continua assim por dias, meses e assim por diante. Esquema GFS simples.
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
}
O problema que vejo:
é que um backup incremental sempre faz referência ao último backup incremental, diferencial ou completo e salva apenas os arquivos que foram alterados desde então. No meu esquema eu tenho dois backups incrementais "diferentes", o diário e o semanal. O semanal sempre faz referência ao diário, que veio no dia anterior, né? Quando mantenho o semanal por mais de 4 semanas (escolhi 5 semanas) e o diário apenas por mais de 10 dias (escolhi 14 dias), os arquivos diários serão excluídos após 14 dias, mas o mensal ainda faz referência a eles . Então haverá um "buraco"?
Eu descobri, se seria possível ter vários "níveis" de backups incrementais, como eu poderia dizer que o backup incremental semanal faz referência apenas aos backups semanais (nível 0) e os backups incrementais diários apenas aos diários (nível 1 ) o problema desapareceria. O mesmo problema ocorreria quando eu mantivesse o backup completo por um curto período. Por exemplo, se o backup completo substituir o único existente, não restará nenhum backup completo que o backup diferencial possa fazer referência e eu perderei todos os backups que fiz até aquele ponto.
O que eu encontrei:
Procurei na internet e encontrei umcapítulo na documentação do bacula: Afirma: "Agora, como cada um desses diferentes tipos de salvamento precisa permanecer válido por períodos diferentes, a maneira mais simples de fazer isso (e possivelmente a única) é ter um pool separado para cada tipo de backup.".
Minhas perguntas:
- Isso basicamente significa que não há outra solução além dos pools completos, diferentes e inkr no capítulo da documentação do bacula. Isso está correto?
- Se estiver incorreto, como posso atingir meu objetivo com dois pools incrementais diferentes?
Também li sobre jobs básicos na documentação do bacula, não é a coisa certa, mas vai na direção certa.
Muito obrigado pelo seu tempo e ajuda na leitura até aqui.
Ps: Não sou falante nativo de inglês e peço desculpas se cometo erros. Se há algo que realmente te irrita, eu gostaria de ouvir de você para melhorar meu inglês.
Obrigado.
Responder1
Eu já resolvi isso com a ajuda da lista de discussão do usuário bacula. Não é possível ter efetivamente vários pools incrementais para um único trabalho. Eu mudei minhas configurações para isso:
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
}
a retenção de arquivos e trabalhos para esse único cliente é definida como a retenção máxima de volume.
-> Retenção de arquivos = 12 meses, Retenção de empregos = 12 meses
Existem também backups completos virtuais que podem ser úteis e são explicados com mais detalhes em: https://www.baculasystems.com/incremental-backup-software/
Mais uma vez, muito obrigado a todos da lista de discussão do bacula-user que me ajudaram a descobrir isso.