Bacula no Debian Lenny

Muito tem se falado sobre estabilidade e confiabilidade em backups. Eu particularmente era adepto aos poderosos scripts (shell e batch), mas me rendi às facilidades do Bacula. Vou apresentar detalhadamente todo o processo de instalação e configuração da ferramenta.

[ Hits: 78.383 ]

Por: paulo em 21/01/2010


Dependências



A instalação ocorreu em um Linux Debian 5 totalmente enxuto, usei o CD netinst e fiz somente a instalação dos pacotes necessários.

# apt-get update
# apt-get install ssh vim openssl make gcc build-essential libssl-dev libpq5 mysql-server libmysql++-dev perl unp apache2 php5 samba mc


Obs.: Durante a instalação do mysql-server ele irá requisitar uma senha, é recomendado que essa senha não seja configurada, porém se achar necessário configurá-la para uma melhor segurança mostrarei como se deve proceder com a configuração do Bacula, com ou sem senha do banco MySQL.

Os fontes foram baixados diretamente do site do Bacula, utilizei um pacote tarball (.gz):
# tar -xzvf bacula-3.0.3.tar.gz -C /opt
# cd /opt/bacula-3.0.3
# ./configure --with-mysql
# make
# make install
# make install-autostart


Esse último comando irá inicializar o Bacula junto com o sistema operacional, o Bacula tem 3 daemons que tem que ser inicializados, são eles:
  • bacula-dir
  • bacula-fd
  • bacula-sd

Criando o banco de dados:

# cd /etc/bacula
# ./create_mysql_database
# ./make_mysql_tables
# ./grant_mysql_privileges


Se você configurou uma senha para o usuário root do banco de dados, deve passá-la em cada um dos scripts acima, no seguinte formato (exemplo, com senha 123):

# ./create_mysql_database -u root -p123

Como eu sou um cara preguiçoso, acredito que todos admin também buscam facilidades, desenvolvi um script para subir e parar o daemon, fica seu critério utilizá-lo.

# touch /etc/init.d/bacula
# chmod + x /etc/init.d/bacula


Cole o conteúdo abaixo dentro deste arquivo.

# Start of BACULA

bacula_start() {

echo "Iniciando BACULA..."
/etc/init.d/bacula-fd start
/etc/init.d/bacula-sd start
/etc/init.d/bacula-dir start

}

bacula_stop() {

for i in `ps ax | grep bacula | grep ? | awk '{print

$1}'`
do

kill -9 $i
done

echo "Parando BACULA..."
}

bacula_restart() {
bacula_stop
sleep 1
bacula_start
}

case "$1" in
'start')
bacula_start
;;
'stop')
bacula_stop
;;
'restart')
bacula_restart
;;
*)
echo

"Use $0 start|stop|restart"
esac

Agora basta dar o comando "/etc/init.d/bacula restart" para poder ganhar tempo.

    Próxima página

Páginas do artigo
   1. Dependências
   2. Algumas explicações
   3. Configurando os arquivos
   4. Considerações do backup sobre o exemplo citado
   5. Instalando e configurando cliente Windows
   6. Restaurando o backup do Windows via console
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalação do OpenGL em placas NVIDIA

Boot Remoto (LTSP) sem servidor DHCP

Adicionando suporte ao Layer7 no CentOS 5.3

Apache 2.4 - Módulos de Multiprocessamento - MPM

LTSP no Slackware

  
Comentários
[1] Comentário enviado por silent-man em 21/01/2010 - 09:25h

Ótimo artigo, parabéns!!!

Tentarei implementar aqui.

[]s

[2] Comentário enviado por jgama em 08/02/2010 - 01:20h

Amigo segui os passo do teu tutorial, mas aqui usando o ubuntu-desktop 9.04 esta dando erro, conforme abaixo

root@valdir-desktop:/etc/bacula# bconsole -c /etc/bacula/bconsole.conf
Connecting to Director valdir-desktop:9101
Director authorization problem.
Most likely the passwords do not agree.
If you are using TLS, there may have been a certificate validation error during the TLS handshake.
Please see http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 for help.
root@valdir-desktop:/etc/bacula#

vc sabe o que pode ser?

Abraço

[3] Comentário enviado por jgama em 08/02/2010 - 01:34h

Estava faltado corrigir a senha no arquivo bconsole.conf

Director {
Name = correio-dir
DIRport = 9102
address = 10.0.2.252
Password = "123"
}

Agora fica nesta parte e não consigo sair

root@valdir-desktop:/etc/bacula# bconsole -c /etc/bacula/bconsole.conf
Connecting to Director valdir-desktop:9101
1000 OK: valdir-desktop-dir Versão: 3.0.3 (18 October 2009)
Digite um período para cancelar um comando.
*run

Selecionado automaticamente Catálogo: MyCatalog
Usando Catálogo "MyCatalog"
Deve ser especificado um nome para o serviço
Os recursos definidos de trabalho são.
1: Windows_GOLF
2: Linux_CORREIO
3: Restore_Linux_CORREIO
4: Restore_Windows_GOLF
Selecione o recurso do trabalho (1-4): 2
Run Backup job
JobName: Linux_CORREIO
Level: Incremental
Client: Linux_Client_CORREIO
FileSet: Linux_File_CORREIO
Pool: Default (From Recurso do Trabalho)
Storage: FileStorage (From Recurso do Trabalho)
When: 2010-02-08 01:33:08
Priority: 10
Pronto para executar ? (sim/mod/não) sim
Serviço enfileirado. JobId=2
*

O que tem que fazer agora?

Abraço


[4] Comentário enviado por prgs.linux em 19/02/2010 - 08:09h

Bom dia, desculpe a demora pra lhe responder..... vi sua dúvida.... talves voçê mesmo já conseguiu resolver... mas vc pode testar se a porta esta open..
# netstat -tan | egrep -w "(9101|9102)"

Ja na segunda dúvida..quando voçe entra no console do bacula, voçe está restaurando uma maquina Windows ou Linux??..Acredito que seja o Linux.
# bconsole -c /etc/bacula/bconsole.conf
*restore
1 ## Lista o JOB
12 ## Restore
10 ## Job Selecionado, a partir do JOB listado no comando 1
mark * ## marca todos pacote
done ## Sai do console
1 ## Marca o cliente a ser restaurado

[5] Comentário enviado por uiliangurjon em 04/03/2010 - 20:20h

Boa noite, amigo gostei muito do seu artigo implementei ele aqui na empresa, mas esta aparecendo esta mensagem

04-Mar 20:11 servidor1-sd JobId 1: Job Linux_Servidor_Dados.2010-03-04_20.11.57_03 is waiting. Cannot find any appendable volumes.


o que pode estar ocorrendo ????


Obrigado

[6] Comentário enviado por linuxblood em 14/03/2010 - 22:03h

Estou com o seguinte problema:

Serviço enfileirado. JobId=30

O que pode ser?

[7] Comentário enviado por riva em 18/03/2010 - 16:20h

estou com problema no restore, onde acontece o seguinte erro:

18-Mar 11:44 Slack_BKP-sd JobId 2: Error: block.c:318 Volume data error at 0:83156168!
Block checksum mismatch in block=1290 len=64512: calc=f07ccd77 blk=63257891
18-Mar 11:44 Slack_BKP-sd JobId 2: Fatal error: fd_cmds.c:169 Command error with FD, hanging up.
18-Mar 11:44 Slack_BKP-dir JobId 2: Error: Bacula Slack_BKP-dir 5.0.1 (24Feb10): 18-Mar-2010 11:44:34
Build OS: i686-pc-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 2
Job: RestoreFiles_r.2010-03-18_11.43.06_04
Restore Client: rnl050-fd
Start time: 18-Mar-2010 11:43:08
End time: 18-Mar-2010 11:44:34
Files Expected: 884
Files Restored: 41
Bytes Restored: 83,028,800
Rate: 965.5 KB/s
FD Errors: 0
FD termination status: OK
SD termination status: Error
Termination: *** Restore Error ***

18-Mar 11:44 Slack_BKP-dir JobId 2: Begin pruning Jobs older than 1 month .
18-Mar 11:44 Slack_BKP-dir JobId 2: No Jobs found to prune.
18-Mar 11:44 Slack_BKP-dir JobId 2: Begin pruning Jobs.
18-Mar 11:44 Slack_BKP-dir JobId 2: No Files found to prune.
18-Mar 11:44 Slack_BKP-dir JobId 2: End auto prune.

você saberia me dizer por que está ocorrendo este erro?

grato.

[8] Comentário enviado por prgs.linux em 19/03/2010 - 10:19h

Publique seu bacula-dir.conf para analizarmos juntos...

[9] Comentário enviado por linuxblood em 19/03/2010 - 14:27h

Senhores, estou com o problema "Serviço enfileirado. JobId=22", o que pode ser?
Abaixo meu DIR para analise, ja rodei rodei e nada, obrigado:

# definicao do diretor

Director {
Name = alysson-dir
DIRport = 9101 # Porta das conexoes do diretor
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 2
Password = "bacula" # senha diretor
Messages = Mensagens
}

Catalog {

Name = MyCatalog
dbname = bacula; user = bacula; password = ""

}

Client {
Name = Windows
Address = 192.168.2.243
FDPort = 9102
Catalog = MyCatalog
Password = "bacula"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Client {
Name = Linux
Address = 192.168.2.230
FDPort = 9102
Catalog = MyCatalog
Password = "bacula"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

###### POOL Linux ######

Pool {
Name = Default
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 1d # one year
}

Pool {
Name = Linux
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderá ser utilizado novamente
Maximum Volume Bytes = 10G
Maximum Volumes = 10
Label Format = "Linux"
}

##### POOl Windows ######

Pool {
Name = Windows
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderá ser utilizado novamente
Maximum Volume Bytes = 10G
Maximum Volumes = 10
Label Format = "Windows"
}


Schedule {
Name = "Linux"
Run = Level=Full Pool=Linux Monday at 8:00pm
}

Schedule {
Name = "Windows"
Run = Level=Full Pool=Windows Monday at 8:00pm

}

FileSet {
Name = "Windows"
Include {
Options {
signature = MD5
IgnoreCase = yes
wildfile = "*.tmp"
Exclude = yes
}
File = "c:\siga"
}
}

FileSet {
Name = "Linux"
Include {
Options {
signature = MD5
IgnoreCase = yes
wildfile = "*.tmp"
Exclude = yes
}
File = /home/alysson/Documentos
}
}

Storage {
Name = alysson-sd
Device = FileStorage
Address = 192.168.2.230
SDPort = 9103
Password = "bacula"
Media Type = File
}

Job {
Name = Windows
Enabled = Yes
Level = Full
Type = Backup
Client = Windows
FileSet = Windows # Arquivo onde indica os arquivos a serem backupeados#
Storage = alysson-sd
Schedule = "Windows"
Pool = Default
Messages = Mensagens
Priority = 10
Write Bootstrap = "/var/bacula/working/Windows.bsr"
}

Job {
Name = Linux
Enabled = Yes
Level = Full
Type = Backup
Client = Linux
FileSet = Linux
Storage = alysson-sd
Schedule = "Linux"
Pool = Default
Messages = Mensagens
Priority = 10
Write Bootstrap = "/var/bacula/working/Linux.bsr"
}

Job {
Name = Restore_Linux
Type = Restore
Client = Linux
FileSet = Linux
Storage = alysson-sd
Messages = Mensagens
Pool = Linux
Where = /tmp/bacula-restores
}

Job {
Name = Restore_Windows
Type = Restore
Client = Windows
FileSet = Windows
Storage = alysson-sd
Messages = Mensagens
Where = c:/windows/temp/bacula-restores
Pool = Windows
}

Messages {
Name = Mensagens
# Envia todas as mensagens geradas pelo Bacula para o arquivo
#/var/log/bacula.log
syslog = all, !skipped, !saved
}

Console {
Name = "alysson-mon"
Password = "bacula"
CommandACL = status, .status

}

[10] Comentário enviado por riva em 19/03/2010 - 15:45h

Segue abaixo o meu bacula-dir.conf

Director { # define myself
Name = Slack_BKP-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "123456" # Console password
# Messages = Daemon
}


Schedule {
Name = "Diario"
Run = Level = Full Pool = SegundaPool Monday at 12:00am
Run = Level = Full Pool = TercaPool Tuesday at 12:00am
Run = Level = Full Pool = QuartaPool Wednesday at 12:00am
Run = Level = Full Pool = QuintaPool Thursday at 12:00am
Run = Level = Full Pool = SextaPool Friday at 12:00am
}

Job {
Name = "Slack_BKP"
Type = Backup
Level = Full
Client = Slack_BKP-fd
FileSet = "Slack_BKP"
Messages = Standard
Storage = FileStorage_s
Pool = Default
Schedule = "Diario"
Write Bootstrap = "/var/bacula/working/Slack_BKP.bsr"
Priority = 10
}

Job {
Name = "lara"
Type = Backup
Level = Full
Client = lara-fd
FileSet = "lara"
Messages = Standard
Storage = FileStorage_l
Pool = Default
Schedule = "Diario"
Write Bootstrap = "/var/bacula/working/lara.bsr"
Priority = 10
}

Job {
Name = "rnl050"
Type = Backup
Level = Full
Client = rnl050-fd
FileSet = "rnl050"
Messages = Standard
Storage = FileStorage_r
Pool = Default
Schedule = "Diario"
Write Bootstrap = "/var/bacula/working/rnl050.bsr"
Priority = 10
}

Job {
Name = "rnl-ti1"
Type = Backup
Level = Full
Client = rnl-ti1-fd
FileSet = "rnl-ti1"
Messages = Standard
Storage = FileStorage_ti1
Pool = Default
Schedule = "Diario"
Write Bootstrap = "/var/bacula/working/rnl050.bsr"
Priority = 10
}

Job {
Name = "RestoreFiles_s"
Type = Restore
Client = Slack_BKP-fd
FileSet = "Slack_BKP"
Storage = FileStorage_s
Messages = Standard
Pool = Default
Where = /tmp/bacula-restores
}

Job {
Name = "RestoreFiles_l"
Type = Restore
Client = lara-fd
FileSet = "lara"
Storage = FileStorage_l
Messages = Standard
Pool = Default
Where = ""
}

Job {
Name = "RestoreFiles_r"
Type = Restore
Client = rnl050-fd
FileSet = "rnl050"
Storage = FileStorage_r
Messages = Standard
Pool = Default
Where = ""
}

Job {
Name = "RestoreFiles_ti1"
Type = Restore
Client = rnl-ti1-fd
FileSet = "rnl-ti1"
Storage = FileStorage_ti1
Messages = Standard
Pool = Default
Where = ""
}


FileSet {
Name = "Slack_BKP"
Include {
Options {
signature = MD5
}

File = /sbin
}
}

FileSet {
Name = "lara"
Include {
Options{
signature = MD5
}
File = "G:/teste_bkp1"
}
}

FileSet {
Name = "rnl050"
Include {
Options {
signature = MD5
}
File = "F:/OLD"
}
}

FileSet {
Name = "rnl-ti1"
Include {
Options {
signature = MD5
}
File = "C:/tst_bacula"
}
}

FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
# @/etc/backup.list
}
}

Storage {
Name = FileStorage_s
Address = 192.168.155.183
SDPort = 9103
Password = "123456"
Device = FileStorage_s
Media Type = File
}

Storage {
Name = FileStorage_l
Address = 192.168.155.183
SDPort = 9103
Password = "123456"
Device = FileStorage_l
Media Type = File
}

Storage {
Name = FileStorage_r
Address = 192.168.155.183
SDPort = 9103
Password = "123456"
Device = FileStorage_r
Media Type = File
}

Storage {
Name = FileStorage_ti1
Address = 192.168.155.183
SDPort = 9103
Password = "123456"
Device = FileStorage_ti1
Media Type = File
}

Client {
Name = Slack_BKP-fd
Address = 192.168.155.183
FDPort = 9102
Catalog = BackupDB
Password = "123456"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Client {
Name = lara-fd
Address = 192.168.155.200
FDPort = 9102
Catalog = BackupDB
Password = "123456"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Client {
Name = rnl050-fd
Address = 192.168.155.113
FDPort = 9102
Catalog = BackupDB
Password = "123456"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Client {
Name = rnl-ti1-fd
Address = 192.168.155.180
FDPort = 9102
Catalog = BackupDB
Password = "123456"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Catalog {
Name = BackupDB
dbname = bacula; user = bacula; password = ""
}

Messages {
Name = Standard
mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount
console = all, !skipped, !saved
append = "/var/bacula/working/log" = all, !skipped
catalog = all
}

Pool {
Name = Default
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 1d
}

Pool {
Name = SegundaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
}

Pool {
Name = TercaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
}

Pool {
Name = QuartaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
}


Pool {
Name = QuintaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
}

Pool {
Name = SextaPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
}

[11] Comentário enviado por prgs.linux em 22/03/2010 - 10:34h

Riva, desculpe a demora para responder...
manu quando vc chama o bconsole

# bconsole -c /etc/bacula/bconsole.conf
*restore
1 ## Lista o JOB
12 ## Restore
10 ## Job Selecionado, a partir do JOB listado no comando 1
mark * ## marca todos pacote
done ## Sai do console
1 ## Marca o cliente a ser restaurado

verifique se no diretorio temporario onde o bacula guarda os backups está com permissao de escrita... e se tem algum trabalho salvo la e o tamanho desse arquivo condiz com o backup realizado

mkdir /tmp/bacula-restores
chmod 777 /tmp/bacula-restores



[12] Comentário enviado por riva em 22/03/2010 - 16:08h

Paulo, não esquenta com demora não, ajude quando der.
o restore é realizado na máquina remota.
abaixo segue o log de restore dos dois servidores, em um o restore foi OK, no outro não. Segue também o arquivo de configuração bacula-dir.conf mais enxuto, com a configuarção só destes dois clientes (servidor 1 (rnl050-fd), eo servidor 2 (lara-fd), o restore do servidor 1 que deu pau.
O backup funciona certinho, o Schedule também funciona, só o restore que está com pau.

grato.

servidor 1:

22-Mar 15:37 Slack_BKP-dir JobId 5: Start Restore Job RestoreFiles_r.2010-03-22_15.37.24_04
22-Mar 15:37 Slack_BKP-dir JobId 5: Using Device "FileStorage_r"
22-Mar 15:37 Slack_BKP-sd JobId 5: Ready to read from volume "bkp_diario_r_0002" on device "FileStorage_r" (/mnt/bacula/CRM).
22-Mar 15:37 Slack_BKP-sd JobId 5: Forward spacing Volume "bkp_diario_r_0002" to file:block 0:216.
22-Mar 15:38 Slack_BKP-sd JobId 5: Error: block.c:318 Volume data error at 0:314238167!
Block checksum mismatch in block=4872 len=64512: calc=31b01bd2 blk=63d79bac
22-Mar 15:38 Slack_BKP-sd JobId 5: Fatal error: fd_cmds.c:169 Command error with FD, hanging up.
22-Mar 15:38 Slack_BKP-dir JobId 5: Error: Bacula Slack_BKP-dir 5.0.1 (24Feb10): 22-Mar-2010 15:38:49
Build OS: i686-pc-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 5
Job: RestoreFiles_r.2010-03-22_15.37.24_04
Restore Client: rnl050-fd
Start time: 22-Mar-2010 15:37:26
End time: 22-Mar-2010 15:38:49
Files Expected: 1,462
Files Restored: 1,363
Bytes Restored: 313,681,993
Rate: 3779.3 KB/s
FD Errors: 0
FD termination status: OK
SD termination status: Error
Termination: *** Restore Error ***

22-Mar 15:38 Slack_BKP-dir JobId 5: Begin pruning Jobs older than 1 month .
22-Mar 15:38 Slack_BKP-dir JobId 5: No Jobs found to prune.
22-Mar 15:38 Slack_BKP-dir JobId 5: Begin pruning Jobs.
22-Mar 15:38 Slack_BKP-dir JobId 5: No Files found to prune.
22-Mar 15:38 Slack_BKP-dir JobId 5: End auto prune.

servidor 2 :

22-Mar 15:18 Slack_BKP-dir JobId 3: Start Restore Job RestoreFiles_l.2010-03-22_15.18.14_04
22-Mar 15:18 Slack_BKP-dir JobId 3: Using Device "FileStorage_l"
22-Mar 15:18 Slack_BKP-sd JobId 3: Ready to read from volume "bkp_diario_l_0001" on device "FileStorage_l" (/mnt/bacula/COMUM).
22-Mar 15:18 Slack_BKP-sd JobId 3: Forward spacing Volume "bkp_diario_l_0001" to file:block 0:216.
22-Mar 15:19 Slack_BKP-sd JobId 3: End of Volume at file 0 on device "FileStorage_l" (/mnt/bacula/COMUM), Volume "bkp_diario_l_0001"
22-Mar 15:19 Slack_BKP-sd JobId 3: End of all volumes.
22-Mar 15:19 Slack_BKP-dir JobId 3: Bacula Slack_BKP-dir 5.0.1 (24Feb10): 22-Mar-2010 15:19:20
Build OS: i686-pc-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 3
Job: RestoreFiles_l.2010-03-22_15.18.14_04
Restore Client: lara-fd
Start time: 22-Mar-2010 15:18:16
End time: 22-Mar-2010 15:19:20
Files Expected: 6,503
Files Restored: 6,503
Bytes Restored: 170,924,967
Rate: 2670.7 KB/s
FD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Restore OK

22-Mar 15:19 Slack_BKP-dir JobId 3: Begin pruning Jobs older than 1 month .
22-Mar 15:19 Slack_BKP-dir JobId 3: No Jobs found to prune.
22-Mar 15:19 Slack_BKP-dir JobId 3: Begin pruning Jobs.
22-Mar 15:19 Slack_BKP-dir JobId 3: No Files found to prune.
22-Mar 15:19 Slack_BKP-dir JobId 3: End auto prune.


bacula-dir.conf :

Director { # define myself
Name = Slack_BKP-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 10
Password = "123456" # Console password
Messages = Standard
}

Schedule {
Name = "Diario_lara"
Run = Level = Full Pool = Diario_Pool_l mon-fri at 15:10
}

Schedule {
Name = "Diario_rnl050"
Run = Level = Full Pool = Diario_Pool_r mon-fri at 15:26
}

Job {
Name = "lara"
Enabled = Yes
Type = Backup
Level = Full
Client = lara-fd
FileSet = "lara"
Messages = Standard
Storage = FileStorage_l
Pool = Diario_Pool_l
Schedule = "Diario_lara"
Write Bootstrap = "/var/bacula/working/lara.bsr"
Priority = 10
}

Job {
Name = "rnl050"
Enabled = Yes
Type = Backup
Level = Full
Client = rnl050-fd
FileSet = "rnl050"
Messages = Standard
Storage = FileStorage_r
Pool = Diario_Pool_r
Schedule = "Diario_rnl050"
Write Bootstrap = "/var/bacula/working/rnl050.bsr"
Priority = 10
}

Job {
Name = "RestoreFiles_l"
Type = Restore
Client = lara-fd
FileSet = "lara"
Storage = FileStorage_l
Messages = Standard
Pool = Diario_Pool_l
Where = ""
}

Job {
Name = "RestoreFiles_r"
Type = Restore
Client = rnl050-fd
FileSet = "rnl050"
Storage = FileStorage_r
Messages = Standard
Pool = Diario_Pool_r
Where = ""
}

FileSet {
Name = "lara"
Include {
Options{
signature = MD5
}
File = "G:/teste_bkp1"
}
}

FileSet {
Name = "rnl050"
Include {
Options {
signature = MD5
}
File = "F:/OLD"
}
}

Storage {
Name = FileStorage_l
Address = 192.168.155.183
SDPort = 9103
Password = "123456"
Device = FileStorage_l
Media Type = File
}

Storage {
Name = FileStorage_r
Address = 192.168.155.183
SDPort = 9103
Password = "123456"
Device = FileStorage_r
Media Type = File
}

Client {
Name = lara-fd
Address = 192.168.155.200
FDPort = 9102
Catalog = BackupDB
Password = "123456"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Client {
Name = rnl050-fd
Address = 192.168.155.113
FDPort = 9102
Catalog = BackupDB
Password = "123456"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes
}

Catalog {
Name = BackupDB
dbname = bacula; user = bacula; password = ""
}

Messages {
Name = Standard
mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount
console = all, !skipped, !saved
append = "/var/bacula/working/log" = all, !skipped
catalog = all
}

Pool {
Name = Diario_Pool_l
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
Purge Oldest Volume = yes
Label Format = bkp_diario_l_
}

Pool {
Name = Diario_Pool_r
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d
Purge Oldest Volume = yes
Label Format = bkp_diario_r_
}


[13] Comentário enviado por tiago.pacato em 25/03/2010 - 10:14h

Instalei o servidor bacula em uma maquina normal com hds de 250 gb, os backups estão sendo feitos normalmente, os catalagos criados, tudo ok. a dúvida é, para passar os backups que ja foram feitos nessa maquina para uma maquina nova que acabamos de adquirir, o que eu poderia fazer? para não perder o que ja foi feito no servidor bacula antigo.

Grato!

[14] Comentário enviado por prgs.linux em 26/03/2010 - 15:05h

Thiago , vou ser sincero.. ainda nao fiz esse teste. Poderia tentar restaurar esses arquivos em uma maquina XYX, e logo após envia-los para o novo servidor, se por acaso eu descobrir como voçê envia essas informaçoes para o bacula eu posto aqui, mesmo por que nao será tarefa muito simples , uma vez que ele guarda as referencias dele num banco de dados MYSQL.

[15] Comentário enviado por danielscripts em 08/04/2010 - 13:35h


Cara fiz td bem direito igual ao seu tutorial
olha aÊ sem erros.

debian:/# /etc/init.d/bacula-director restart
Restarting Bacula Director: bacula-dir.

debian:/etc/bacula# /etc/init.d/bacula-sd restart
Restarting Bacula Storage daemon: bacula-sd.

debian:/etc/bacula# /etc/init.d/bacula-fd restart
Restarting Bacula File daemon: bacula-fd.

Só que num estar fazendo o backup :S
quando tento a forma manual com o bconsole -c /etc/bacula/bconsole.conf
da esse erro.

Connecting to Director debian:9101
08-Abr 13:28 bconsole JobId 0: Fatal error: bsock.c:129 Unable to connect to Director daemon on debian:9101. ERR=Conexão recusada


bacula-dir.conf

Director { # define myself
Name = debian-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
Password = "123" # Console password
Messages = Mensagens
}


Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}

Client {
Name = Linux_Client_Debian
Address = 10.68.16.26
FDPort = 9102
Catalog = MyCatalog
Password = "123" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 30 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}

Pool {
Name = Default
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 1d # one year
}

Pool {
Name = SegundaPoolDebian
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderáer utilizado novamente
Maximum Volume Jobs = 10
Maximum Volumes = 10
Label Format = "Segunda_Debian"
}

Pool {
Name = TercaPoolDebian
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderáer utilizado novamente
Maximum Volume Jobs = 10
Maximum Volumes = 10
Label Format = "Terca_Debian"
}

Pool {
Name = QuartaPoolDebian
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderáer utilizado novamente
Maximum Volume Jobs = 10
Maximum Volumes = 10
Label Format = "Quarta_Debian"
}

Pool {
Name = QuintaPoolDebian
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderáer utilizado novamente
Maximum Volume Jobs = 10
Maximum Volumes = 10
Label Format = "Quinta_Debian"
}


Pool {
Name = SextaPoolDebian
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d # o volume poderáer utilizado novamente
Maximum Volume Jobs = 10
Maximum Volumes = 10
Label Format = "Sexta_Debian"
}

Schedule {
Name = "Diario_Debian"
Run = Level=Full Pool=SegundaPoolDebian Monday at 12:00pm
Run = Level=Full Pool=TercaPoolDebian Tuesday at 12:00pm
Run = Level=Full Pool=QuartaPoolDebian Wednesday at 12:00pm
Run = Level=Full Pool=QuintaPoolDebian Thursday at 12:00pm
Run = Level=Full Pool=SextaPoolDebian Friday at 12:00pm
}


FileSet {
Name = "Linux_File_Debian"
Include {
Options {
signature = MD5
IgnoreCase = yes
wildfile = "*.tmp"
Exclude = yes
}

File = /var/www
File = /home
}
}


Storage {
Name = FileStorage
Device = FileStorage
Address = 10.68.16.26
SDPort = 9103
Password = "123"
Media Type = File
}


Job {
Name = Linux_Debian
Enabled = Yes
Level = Incremental
Type = Backup
Client = Linux_Client_Debian
FileSet = Linux_File_Debian
Storage = FileStorage
Schedule = "Diario_Debian"
Pool = Default
Messages = Mensagens
Priority = 10
Write Bootstrap = "/var/bacula/working/Linux_Debian.bsr"
}

Job {
Name = Restore_Linux_Debian
Type = Restore
Client = Linux_Client_Debian
FileSet = Linux_File_Debian
Storage = FileStorage
Messages = Mensagens
Pool = Default
Where = /tmp/bacula-restores
}

Messages {
Name = Mensagens
# Envia todas as mensagens geradas pelo Bacula para o arquivo
#/var/log/bacula.log
syslog = all, !skipped, !saved
}

===============
bacula-sd.conf


Storage { # definition of myself
Name = debian-dir
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
}

Director {
Name = debian-dir
Password = "123"
}

Device {
Name = "FileStorage"
Media Type = File
Archive Device = /tmp/bacula
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}

Messages {
Name = Standard
director = debian-dir = all
# operator = root = mount
}

=========================
bacula-fd.conf

Director {
Name = debian-dir
Password = "123"
}

FileDaemon { # this is me
Name = debian-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 1
}

Messages {
Name = Standard
director = debian-dir = all, !skipped !restored
}

========================
bconsole.conf

Director {
Name = debian-dir
DIRport = 9101
address = debian
Password = "123"







[16] Comentário enviado por LinuxTec em 15/04/2010 - 08:48h

Bom dia amigo, antes de tudo gostaria de agradecer a sua contribuição com a VOL e que Deus te ilumine sempre, será que podia me ajudar, administro uma rede e me deparei com o bacula, tenho 4 Clientes nele, Backup, Firewall, Mail, Samba tudo funcionando normal, quando adcionei meu server de aplicação chamado sistemas ele ta pau na comunicação com o bacula-fd.conf mais está identica a dos outros server que está funcionando poderia me dar uma luz, estou oline das 07:30 as 18:00, MSN Claudio@linuxtec.com.br.
Vou passar o erro que dispara por email:

12-Apr 20:30 backup-dir JobId 1511: No prior Full backup Job record found.
12-Apr 20:30 backup-dir JobId 1511: No prior or suitable Full backup found in catalog. Doing FULL backup.
12-Apr 20:30 backup-dir JobId 1511: Start Backup JobId 1511, Job=sistemas.2010-04-12_20.30.00.05
12-Apr 20:30 backup-dir JobId 1511: Using Device "FileStorage"
12-Apr 20:30 sistemas-fd JobId 1511: Fatal error: Failed to connect to Storage daemon: backup:9103
12-Apr 20:30 sistemas-fd JobId 1511: Error: bsock.c:182 gethostbyname() for host "backup" failed: ERR=Non-recoverable errors, FORMERR, REFUSED, or NOTIMP.
12-Apr 20:30 backup-dir JobId 1511: Fatal error: Socket error on Storage command: ERR=No data available
12-Apr 20:30 backup-dir JobId 1511: Error: Bacula backup-dir 2.4.4 (28Dec08): 12-Apr-2010 20:30:02
Build OS: i486-pc-linux-gnu debian 5.0
JobId: 1511
Job: sistemas.2010-04-12_20.30.00.05
Backup Level: Full (upgraded from Incremental)
Client: "sistemas-fd" 2.4.4 (28Dec08) i486-pc-linux-gnu,debian,5.0
FileSet: "sistemas" 2010-03-09 20:30:00
Pool: "Full-Pool-sistemas" (From Job FullPool override)
Storage: "File" (From Job resource)
Scheduled time: 12-Apr-2010 20:30:00
Start time: 12-Apr-2010 20:30:02
End time: 12-Apr-2010 20:30:02
Elapsed time: 0 secs
Priority: 10
FD Files Written: 0
SD Files Written: 0
FD Bytes Written: 0 (0 B)
SD Bytes Written: 0 (0 B)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Storage Encryption: no
Volume name(s):
Volume Session Id: 3
Volume Session Time: 1271079565
Last Volume Bytes: 0 (0 B)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status:
SD termination status: Waiting on FD
Termination: *** Backup Error ***

[17] Comentário enviado por LinuxTec em 05/05/2010 - 10:34h

Cara vi seu post e acho que pode me ajudar, sou iniciante com bacula e estava sem espaço no meu server, dentro de /home/backup é onde ele guarda os jobs e backups que roda na madrugada eu deletei varios para ganhar espaço após isso 3 serves ao tentar coletar o bacup das partições da o seguinte erro.

Assunto: Bacula: Intervention needed for samba.2010-05-05_10.22.00.02

Corpo do Email:

05-May 10:22 backup-sd JobId 1632: Job samba.2010-05-05_10.22.00.02 waiting. Cannot find any appendable volumes.
Please use the "label" command to create a new Volume for:
Storage: "FileStorage" (/home/backup)
Pool: Full-Pool-samba
Media type: File


Ou seja ele diz que o trabalho foi interrompido pois, Trabalho espera samba.2010-05-05_10.22.00.02. Não é
possível encontrar todos os volumes adicionável.

Eu devo criar um volume chamado samba.2010-05-05_10.22.00.02 é isso e como crio no bconsole


[18] Comentário enviado por Marcus-RJ em 25/05/2010 - 11:19h

Executei o tutorial mas nada acontece, nem mensagem de erro, nem backup.

Criei o diretorio /mnt/backup e ajustei o endereço IP, mas nada. =(

Abs!

[19] Comentário enviado por parrera em 08/10/2010 - 10:15h

Muito bom tutorial.
Estou instalando o bacula em um servidor de arquivos(Maquina1), ela será simultaneamente catalogo, storage e cliente. Será cliente pq só o
conteúdo dela é que me interessa backupiar. É storage espelhados pq têm um segundo disco(Maquina2) onde o primeiro disco das duas máquinas foi bakupiado. É catalogos espelhados para aumentar a disponibilidade e tolerância a falha do sistema de backup do meu laboratório. Se uma das máquinas cair, seja a Maquina1 ou a Maquina2, a outra continuará mantendo o serviço de backup.
Deu pra entender pessoal?
Tenho uma maquina(Maquina1) que quero fazer o backup de um HD dela, esta maquina possui um outro HD o qual sera armazenado o backup e uma outra maquina na rede(Maquina2) terá um outro HD que será espelho desse HD de backup da Maquina1.
Minha pergunta é a seguinte, nas duas maquinas devo configurar os arquivos bacula-dir.conf, bacula-fd.conf, bacula-sd.conf e bconsole.conf? Como implemento esse espelhamento dos 2 HD's que ficarão para backup(2 maquinas distintas, uma é cliente dela mesma e a outra só tem um HD para caso de falha de alguma das 2 máquinas)?

[20] Comentário enviado por parrera em 13/10/2010 - 11:59h

alguém sabe se devo configurar estes 3 arquivos nas 2 maquinas q terao o HD para backup(um espelho do outro)?

[21] Comentário enviado por diegop em 28/09/2011 - 15:07h

Boa tarde galera, muito bom esse seu tutorial Paulo, parabéns.
Consegui instalar e configurar o bacula, o backup funciona normalmente, mas o restore não, pode me ajudar? Não sei o que estou fazendo de errado.
Segue meu bacula-dir.conf:

Director {
Name = alpha-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1
Password = "admin"
Messages = Daemon
}

JobDefs {
Name = "DefaultJob"
Type = Backup
Level = Incremental
Client = alpha-fd
FileSet = "file-dados"
Schedule = "diario"
Storage = storage
Messages = Standard
Pool = pool-dados
Priority = 10
}

############## BACKUPS DADOS ################
Job {
Name = "backup-diario-dados"
Type = Backup
Client = alpha-fd
Level = Incremental
FileSet="file-dados"
Schedule = "diario"
Storage = storage
Messages = Standard
Pool = pool-dados
Priority = 10
}
Job {
Name = "backup-mensal-dados"
Type = Backup
Client = alpha-fd
Level = Full
FileSet="file-dados"
Schedule = "mensal"
Storage = storage
Messages = Standard
Pool = pool-dados
Priority = 10
}

############## BACKUPS BANCO ################
Job {
Name = "backup-diario-banco"
Type = Backup
Client = alpha-fd
Level = Incremental
FileSet="file-banco"
Schedule = "diario"
Storage = storage
Messages = Standard
Pool = pool-banco
Priority = 11
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula"
RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
}
Job {
Name = "backup-mensal-banco"
Type = Backup
Client = alpha-fd
Level = Full
FileSet="file-banco"
Schedule = "mensal"
Storage = storage
Messages = Standard
Pool = pool-banco
Priority = 11
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula"
RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
}

############## RESTORES ################
Job {
Name = "restore-dados"
Type = Restore
Client=alpha-fd
FileSet="file-dados"
Storage = storage
Pool = pool-dados
Messages = Standard
Where = /restore/dados
}
Job {
Name = "restore-banco"
Type = Restore
Client=alpha-fd
FileSet="file-banco"
Storage = storage
Pool = pool-banco
Messages = Standard
Where = /restore/banco
}

FileSet {
Name = "file-dados"
Include {
Options {
signature = MD5
}
File = /dados
}
Exclude {
File = *.tmp
File = *.mp3
}
}
FileSet {
Name = "file-banco"
Include {
Options {
signature = MD5
}
File = /var/lib/bacula/bacula.sql
}
}

Schedule {
Name = "diario"
Run = Full sun at 22:00
Run = Incremental mon-sat at 22:00
}
Schedule {
Name = "mensal"
Run = Full 1st sun at 12:00
}

Client {
Name = alpha-fd
Address = 192.168.192.99
FDPort = 9102
Catalog = banco
Password = "admin"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

Storage {
Name = storage
Address = 192.168.192.99
SDPort = 9103
Password = "admin"
Device = storage-alpha
Media Type = File
}

Catalog {
Name = banco
dbname = "bacula"; dbuser = "bacula"; dbpassword = "bacula"
}

Messages {
Name = Standard
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}
Messages {
Name = Daemon
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}

Pool {
Name = pool-dados
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
LabelFormat = "Dados"
}

Pool {
Name = pool-banco
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
LabelFormat = "Banco"
}

Console {
Name = alpha-mon
Password = "admin"
CommandACL = status, .status
}

Se alguém poder me ajudar vou ficar muito agradecido.
Meu e-mail é: diegomacielp@gmail.com
VLW !!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts