DUVIDA JOB DE COPIA

225 views
Skip to first unread message

Hernane Ribeiro

unread,
Dec 15, 2015, 6:16:07 AM12/15/15
to Bacula Backup-Pt-Br
Bom dia pessoal.

   O meu cenário é o seguinte, tenho hoje um servidor bacula armazenado no mesmo local dos demais servidores, o que não é muito seguro.
   Gostaria de efetuar um job de copia do backup mensal e semanal para um HD Externo toda segunda feira, pois dessa forma tenho uma copia externa.
   O problema é que eu só quero copiar o ultimo volume de cada pool e não todo o volume já que faço retenção de 6 meses para cada pool full e 1 mes para pool semanal.
   Com a configuração abaixo o bacula está copiando todas as pools para o HD Externo, e eu gostaria somente da ultima copia full.

Segue abaixo minha configuração, desde já agradeço a todos.

# JOB DE BACKUP DO WIN2008 ###################################################################
Job {
  Name = "BackupWin2008"
  Enabled = yes
  Type = Backup
  Level = Full
  Client = win2008-fd
  FileSet = "FS-WIN2008"
  Messages = Standard
  Pool = WIN2008M
  Schedule = "Semanal-Win2008"
  Priority = 10
}
Job {
  Name = "BackupWin2008Copia"
  Enabled = yes
  Type = Copy
  Level = Full
  Client = win2008-fd
  FileSet = "FS-WIN2008"
  Selection Type = PoolUncopiedJobs
  Maximum Concurrent Jobs = 1
  Messages = Standard
  Pool = WIN2008M
  Priority = 10
}
Client {
  Name = win2008-fd
  Address = 192.168.1.2
  Password = "********************************************"
  FDPort = 9102
  Catalog = MyCatalog
  File Retention = 7 months           # 60 days
  Job Retention = 7 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}
# POOL - WIN2008 - FULL ######################################################################
Pool {
  Name = WIN2008M
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 5 months         # one year
  Volume Use Duration = 23 hours
  Maximum Volume Bytes = 450G         # Limit Volume size to something reasonable
  Maximum Volumes = 6                 # Limit number of Volumes in Pool
  Label Format = "WIN"                # Auto label
  Storage = MNT-Lvm
  Next Pool = WIN-Copia
}
# POOL - WIN2008 - FULL - COPIA HD EXTERNO ###################################################
Pool {
  Name = WIN2008M-Copia
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 30 days          # one year
  Volume Use Duration = 23 hours
  Maximum Volume Bytes = 450G         # Limit Volume size to something reasonable
  Maximum Volumes = 1                 # Limit number of Volumes in Pool
  Label Format = "WIN-COP"            # Auto label
  Storage = MNT-Externo
}

Wanderlei

unread,
Dec 15, 2015, 6:37:43 AM12/15/15
to Bacula Backup-Pt-Br
Bom Dia Hernane

Eu utilizo um shell script para copiar os volumes para um hd externo.
No meu caso eu faço um rsync de todos os volumes, da pasta do bacula e do dump do mysql

Att Wanderlei

Heitor Faria

unread,
Dec 15, 2015, 6:44:27 AM12/15/15
to bacula-ba...@googlegroups.com
Hernane,

A única maneira que enxergo é usando a selection type SQLQuery, pois não existe uma selection type "Newest Volume".

Abraços,
=======================================================================
Heitor Medrado de Faria  - LPIC-III | ITIL-F |  Bacula Systems Certified Administrator II
Ministro treinamento e implementação in-company Bacula: http://www.bacula.com.br/in-company/
Ou assista minhas vídeo aulas on-line: http://www.bacula.com.br/treinamento-bacula-ed/
Site: www.bacula.com.br | Facebook: heitor.faria
========================================================================


--
Você recebeu essa mensagem porque está inscrito no grupo "Bacula Backup-Pt-Br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para bacula-backup-p...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para bacula-ba...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/bacula-backup-pt-br.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/bacula-backup-pt-br/e9343865-84dc-439b-a7df-41329ab946aa%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Message has been deleted

Hernane Ribeiro

unread,
Dec 15, 2015, 1:02:26 PM12/15/15
to Bacula Backup-Pt-Br
Boa Tarde Heitor

   Seguindo a sua dica conseguir o que estava precisando, criei um SQLQuery que faz a verificação do ultimo job do cliente e também a verificação da copia do mesmo job.
   Não sei se fiz a Query da forma mais simples, segue abaixo para efeito de consulta se alguém precisa.

    Ficou assim:

    Selection Type = SQLQuery

    Selection Pattern = "Select JobId,Name,StartTime, Count(StartTime) From Job Where Name = 'BackupWin2008' And (Type = 'C' Or Type = 'B') And Level = 'F' And JobStatus = 'T' And StartTime = (Select StartTime From Job Where (Type = 'B' Or Type = 'C') And JobStatus = 'T' Order By JobId Desc Limit 1) Group By StartTime Having Count(StartTime) = 1;"

Muito Obrigado pela dica.

Heitor Faria

unread,
Dec 15, 2015, 1:02:29 PM12/15/15
to bacula-ba...@googlegroups.com
Boa Tarde Heitor

   Seguindo a sua dica conseguir o que estava precisando, criei um SQLQuery que faz a verificação do ultimo job do cliente e também a verificação da copia do mesmo job.
   Não sei se fiz a Query da forma mais simples, segue abaixo para efeito de consulta se alguém.


    Ficou assim:
    Selection Type = SQLQuery
    Selection Pattern = "Select JobId,Name,StartTime, Count(StartTime) From Job Where Name = 'BackupWin2008' And (Type = 'C' Or Type = 'B') And Level = 'F' And JobStatus = 'T' And StartTime = (Select StartTime From Job Where (Type = 'B' Or Type = 'C') And JobStatus = 'T' Order By JobId Desc Limit 1) Group By StartTime Having Count(StartTime) = 1;"
Hernane: sou um animal batizado quando se trata de sql ou qualquer outra linguagem de programação, no máximo me atendo a fazer ajustes bem pontuais. A Ana ou o Wanderlei parecem ter mais experiência e talvez possam otimizar.

Wanderlei

unread,
Dec 15, 2015, 3:00:02 PM12/15/15
to Bacula Backup-Pt-Br
Boa tarde Hernane e Heitor

Analisando o que você precisa:
O bacula não trata as cópias/migrações como volumes, mas sim como jobs, então é preciso saber os JobId's para realizar o procedimento.

Supondo que você faça o backup Full no Domingo (Semanal e Mensal) , então na segunda você poderia pegar este último Backup Full e copiar para o HD externo

select max(JobId) as JobId from Job where Type = 'B' and Level = 'F' and JobStatus = 'T' and Name = 'BackupWin2008' and EndTime > ( now() - interval 1 day) 

Ou então caso tenha volumes diferentes

select distinct JobId  from JobMedia 
where MediaId in (select MediaId from Media where VolumeName like 'WIN-Semanal%') 
and JobId in ( select JobId from Job where Type = 'B' and Level = 'F' and JobStatus = 'T' and Name = 'BackupWin2008' and EndTime > ( now() - interval 1 day) );

select distinct JobId  from JobMedia 
where MediaId in (select MediaId from Media where VolumeName like 'WIN-Mensal%') 
and JobId in ( select JobId from Job where Type = 'B' and Level = 'F' and JobStatus = 'T' and Name = 'BackupWin2008' and EndTime > ( now() - interval 1 day) );

Acredito que isso possa te ajudar!

Mas ainda eu acho mais prático copiar os volumes usando um script SSH!


Att Wanderlei

Hernane Ribeiro

unread,
Dec 16, 2015, 4:18:16 AM12/16/15
to Bacula Backup-Pt-Br
Bom dia Wanderlei e Heitor

   Muito obrigado pela ajuda, aparentemente essa solução vai me atender, mas confesso que fiquei muito curioso sobre o processo que o Wanderlei comentou, mas sou novato em Linux e nem por onde começar.

   Se não for pedir muito Wanderlei, você poderia me dar um exemplo de como seria o processo por Script SSH e se dessa forma ficaria catalogado no Bacula ?

Att Hernane.

Wanderlei

unread,
Dec 16, 2015, 7:40:59 AM12/16/15
to Bacula Backup-Pt-Br
Bom Dia Hernane 

Na verdade escrevi errado, seria um shell script!
Tenho um exemplo de script usando o rsync!

Teria que fazer algumas adaptações para copiar apenas o último volume e de acordo com as suas necessidades e executar via crontab!

Comando para pegar o arquivo mais recente por data:
ls -t1 /mnt/disco01/Volume-Mensal-00* | head -1


Att Wanderlei
_rsync.sh

Hernane Ribeiro

unread,
Dec 17, 2015, 4:35:26 AM12/17/15
to Bacula Backup-Pt-Br
Bom dia Wanderlei

   Muito obrigado pela ajuda, vou analisar o script e ver se consigo entender pois como te disse sou novato em Linux e ainda não tenho um conhecimento para tanto, mas acredito que consigo colocar adaptar a minha necessidade.

Muito obrigado.

Att Hernane
Reply all
Reply to author
Forward
0 new messages