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.402 ]

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

Configurando uma pasta compartilhada para os usuários do seu Linux

Instalando o driver de placas Nvidia no Fedora 11 Leonidas

MSN-PROXY no CentOS 5.5 64 bits

Instalando e configurando o PostgreSQL

Instalando Apache 2.2 com múltiplos sites no OpenSuSE 10.2

  
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