Contribuição Config backup Virtual Full bacula

95 views
Skip to first unread message

Duilio Nobre

unread,
Dec 18, 2020, 10:55:27 AM12/18/20
to Bacula Backup-Pt-Br
Olá a todos, venho aqui contribuir com a comunidade, postando a configuração usada aqui no trabalho ( com cortes de alguns campos  ). 

Tive dificuldade em encontrar exemplos reais de configuração, até mesmo na documentação, daí espero que possa ajudar alguem que esteja almejando implementar o Virtual full em sua política de backup.

Schedule {
    Name = DailyAt1900Schedule
    Run = daily at 19:00
    Run = Level=VirtualFull Priority=12 1st sat at 7:00
}

Client {
    Name = c1
    Address = c1.example.com 
    File Retention = 30 days
    Job Retention = 30 days
    Auto Prune = yes
    Maximum Concurrent Jobs = 10
}

Device {
    Name = d1
    Archive Device = /mnt/disk1/archive1
    Media Type = d_mt1
    Maximum Concurrent Jobs = 5 
    Always Open = no
    Removable Media = no
    Random Access = yes 
    Label Media = yes 
    Automatic Mount = yes 
}

Device {
    Name = d1Full
    Archive Device = /mnt/disk1/archive2
    Media Type = d_mt1
    Maximum Concurrent Jobs = 5 
    Always Open = no
    Removable Media = no
    Random Access = yes 
    Label Media = yes 
    Automatic Mount = yes 
}


Storage {
    Name = s1
    Address = serv-sd1.example.com
    Device = d1
}

Storage {
    Name = s1Full
    Address = serv-sd1.example.com   
    Device = d1Full
}

Pool {
    Name = p1
    Maximum Volumes = 50
    Pool Type = Backup
    Storage = s1
    Maximum Volume Jobs = 1
    Maximum Volume Bytes = 100G
    Auto Prune = yes
    Volume Retention = 40 days
    Action On Purge = Truncate
    Recycle = yes
    Label Format = p1-Vol-
    Next Pool =p1Full
}

Pool {
    Name = p1Full
    Maximum Volumes = 50
    Pool Type = Backup
    Storage = s1Full
    Maximum Volume Jobs = 1
    Maximum Volume Bytes = 100G
    Auto Prune = yes
    Volume Retention = 40 days
    Action On Purge = Truncate
    Recycle = yes
    Label Format = p1Full-Vol-
}

Job {
    Name = AdminPruningJob
    Type = Admin
    Client = c1
    Fileset = EmptyFileset
    Messages = Standard
    Pool = DummyPool
    Schedule = DailyMaintenance
    Storage = s1
    Run Script {
        Runs On Client = no
        Runs When = Before
        Fail Job On Error = no
        Console = "prune volume expired yes"
    }
    Run Script {
        Runs On Client = no
        Runs When = After
        Fail Job On Error = no
        Console = "purge volume action=truncate allpools storage=s1"
    }
     Run Script {
        Runs On Client = no
        Runs When = After
        Fail Job On Error = no
        Console = "purge volume action=truncate allpools storage=s1Full"
    }
}

Job Defs {
    Name =JobDefaults
    Type = Backup
    Level = Incremental
    Accurate = yes
    Write Bootstrap = /opt/bacula/working/%n.bsr
    Messages = Standard
    Delete Consolidated Jobs = no
    Spool Attributes = yes
    Maximum Concurrent Jobs = 4
    Reschedule On Error = yes
    Reschedule Interval = 6 hours
    Reschedule Times = 2
    Allow Duplicate Jobs = yes
    Cancel Lower Level Duplicates = no
    Cancel Queued Duplicates = no
    Cancel Running Duplicates = no
    Priority = 11
}

Job {
    Name =j1Job
    Enabled = yes
    Job Defs = IncrementalJobDefaults
    Client = c1
    Fileset = f1
    Pool = p1
    Schedule = DailyAt1900Schedule
    Run Before Job = "/opt/bacula/scripts/pre_job.sh "
    Run After Job = "/opt/bacula/scripts/pos_job.sh"
    Run After Failed Job = "/opt/bacula/scripts/pos_job.sh"
}


OBS:
- versão do bacula: 9.6
- No script pre_job.sh realizo uma cópia dos volumes do último Virtual full do pool "p1full"para o pool "p1", pois o bacula até a versão usada pede que os volumes do último VF + volumes incrementais subsequentes estejam disponíveis em um pool e a escrita dos novos volumes VF esteja em outro pool - não permite ainda que leitura e escrita seja no mesmo pool. O que descobri é que a cópia dos volumes do último job VirtualFull pode ser apenas usando criação de um link simbólico, otimizando tanto espaço temporário necessário para o job, quanto tempo de execução.
- No script pos_job.sh removo os links simbólicos criados.
-  Não usei a diretiva Delete Consolidated Jobs, pois decidi contar com as diretivas de Retention e configuração de truncar os volumes.

Atenciosamente,
Duílio Nobre

Reply all
Reply to author
Forward
0 new messages