Clearspace backup con bacula

Aloja, acá les dejo un howto de como hacer backup de clearspace con bacula. Después voy a ir subiendo más configuraciones de bacula. Espero les sirva

1) Instalamos bacula

apt-get update

apt-get install bacula bacula-director-mysql bacula-sd-mysql bacula-doc

Nos pedirá la clave del root de la DB y la clave que se usará para el baculadirector.

2) Configurando File Daemon (FD)

El File Daemon, también se lo puede ver como el cliente, se instala en donde se hará el backup donde recuperará los archivos que serán backupeados y se los pasa al Storage Daemon (SD).

—-/etc/bacula/bacula-fd.conf—–

Les dejó aquí la configuración que uso:

Director {

Name = tuhost.com-dir

Password = “Nlw2vp555z4vep0viaBpeALX6nlP9An8NQx5J/lLK9LY”

}

#

# Restricted Director, used by tray-monitor to get the

#   status of the file daemon

#

Director {

Name = tuhost.com-mon

Password = “cYGo84XRMzEMU/l7VBcsH1gqFV0hMgtq3EK0yz1z3tZe”

Monitor = yes

}

#

# “Global” File daemon configuration specifications

#

FileDaemon {                          # this is me

Name = tuhost.com-fd

FDport = 9102                  # where we listen for the director

WorkingDirectory = /var/lib/bacula

Pid Directory = /var/run/bacula

Maximum Concurrent Jobs = 20

FDAddress = 127.0.0.1

}

# Send all messages except skipped files back to Director

Messages {

Name = Standard

director = tuhost.com-dir = all, !skipped, !restored

}

3) Configurando el Storage Daemon:

El SD es el encargado de manejar los dispositivos que se usarán para el backup, o sea, donde se alojarán nuestros archivos de backup.

Acá les dejo mi archivo de configuración:

—/etc/bacula/bacula-sd.conf—

Storage {

Name = tuhost.com-sd

SDPort = 9103                  # Director’s port

WorkingDirectory = “/var/lib/bacula”

Pid Directory = “/var/run/bacula”

Maximum Concurrent Jobs = 20

SDAddress = 127.0.0.1

}

Director {

Name = tuhost.com-dir

Password = “m/k3mhFkxEXzQMbLDWXuGGlJgZX9P3j/kB70CoOQr740”

}

Director {

Name = tuhost.com-mon

Password = “eNY58lAD8f5HXdHQG9NnPPDlBDFFL1QkqjOdgxcRpRJ7”

Monitor = yes

}

Device {

Name = FileStorage

Media Type = File

Archive Device = /home/bacula

LabelMedia = yes;

Random Access = Yes;

AutomaticMount = yes;

RemovableMedia = no;

AlwaysOpen = no;

}

Messages {

Name = Standard

director = tuhost.com-dir = all

}

—-EOF—-

4) Configuración del Bacula director (BD)

Bueno, el BD es el cerebro de todo, es quien “dirije” (quizás de allí su nombre director) a los demás daemons.

—–/etc/bacula/bacula-dir.conf—–

Director {

Name = tuhost.com-dir

DIRport = 9101

QueryFile = “/etc/bacula/scripts/query.sql”

WorkingDirectory = “/var/lib/bacula”

PidDirectory = “/var/run/bacula”

Maximum Concurrent Jobs = 1

Password = “iA6pwbPuT2zUt/hbyE2hj4kwnkG5qmjw7x7a+6MB9bbO”

Messages = Daemon

DirAddress = 127.0.0.1

}

JobDefs {  #no es mas que un template para jobs, viene a ser como una configuracion global que puede ser sobreescribida por jobs

Name = “DefaultJob”

Type = Backup

Level = Incremental

Client = tuhost.com-fd

Storage = File

Messages = Standard

Pool = Default

Priority = 10

}

Job {

Name = “ClearSpace”

Level = Full

FileSet = “ClearSpace”

JobDefs = “DefaultJob”

Schedule = “Daily”

Write Bootstrap = “/var/lib/bacula/ClearSpace.bsr”

# Crea una copia de la base de datos

RunBeforeJob = “/usr/local/jive/postgres/bin/pg_dump -U sbs -f /tmp/temp.sql”

# Borra la copia de la base de datos

RunAfterJob  = “rm /tmp/temp.sql”

}

# Archivos que serán backupeados

FileSet {

Name = “ClearSpace”

Include {

Options {

signature = MD5

}

File = /usr/local/jive/

File = /tmp/temp.sql

}

Exclude {

File = /usr/local/jive/var/data

File = /usr/local/jive/var/logs

}

}

Schedule {

Name = “Daily”

Run = Full 1st sun at 23:05

Run = Differential 2nd-5th sun at 23:05

Run = Incremental mon-sat at 23:05

}

Client {

Name = tuhost.com-fd

Address = tuhost.com

FDPort = 9102

Catalog = MyCatalog

Password = “Nlw2vp555z4vep0viaBpeALX6nlP9An8NQx5J/lLK9LY”          # password for FileDaemon

File Retention = 30 days            # 30 days

Job Retention = 6 months            # six months

AutoPrune = yes                     # Prune expired Jobs/Files

}

Storage {

Name = File

Address = tuhost.com                # N.B. Use a fully qualified name here

SDPort = 9103

Password = “m/k3mhFkxEXzQMbLDWXuGGlJgZX9P3j/kB70CoOQr740”

Device = FileStorage

Media Type = File

}

Catalog {

Name = MyCatalog

dbname = bacula; DB Address = “”; user = bacula; password = “CLAVEMYSQL”

}

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 = Default

Pool Type = Backup

Recycle = yes                       # Bacula can automatically recycle Volumes

AutoPrune = yes                     # Prune expired volumes

Volume Retention = 365 days         # one year

Accept Any Volume = yes             # write on any volume in the pool

}

Console {

Name = tuhost.com-mon

Password = “GxVW6dfnO+EVBPpkIdd5VXF8RdzYXx3lEJ+g86Gs+qIP”

CommandACL = status, .status

}

—EOF—

5) Reiniciamos todo

find /etc/init.d/ -name ‘bacula*’ -exec {} restart \;

Si no tira ningún errore vamos a probar

6) TEST

Ejecutamos bacula-console

Corremos label y le ponemos un nombre a nuestro device, con eso lo montamos.

Dentro de la consola corremos run, y nos pedia que elijamos el Job que queremos correr.

Después de un rato terminará en esto:

25-Nov 10:04 tuhost.com-dir: Bacula 1.38.11 (28Jun06): 25-Nov-2009 10:04:21
JobId:                  6
Job:                    ClearSpace.2009-11-25_09.27.08
Backup Level:           Full
Client:                 “tuhost.com-fd” x86_64-pc-linux-gnu,debian,4.0
FileSet:                “ClearSpace” 2009-11-25 09:24:29
Pool:                   “Default”
Storage:                “File”
Scheduled time:         25-Nov-2009 09:27:06
Start time:             25-Nov-2009 09:42:18
End time:               25-Nov-2009 10:04:21
Elapsed time:           22 mins 3 secs
Priority:               10
FD Files Written:       27,702
SD Files Written:       27,702
FD Bytes Written:       20,298,506,079 (20.29 GB)
SD Bytes Written:       20,303,281,386 (20.30 GB)
Rate:                   15342.8 KB/s
Software Compression:   None
Volume name(s):         bacula
Volume Session Id:      1
Volume Session Time:    1259166237
Last Volume Bytes:      20,319,259,985 (20.31 GB)
Non-fatal FD errors:    0
SD Errors:              0
FD termination status:  OK
SD termination status:  OK
Termination:            Backup OK

7) Bueno ahora la interfaz web

root@cari1:~# cd /usr/src/
root@cari1:/usr/src# wget “http://downloads.sourceforge.net/project/bacula/bacula/3.0.3/bacula-gui-3.0.3.tar.gz?use_mirror=ufpr”
root@cari1:/usr/src# tar -xzf bacula-gui-3.0.3.tar.gz
root@cari1:/usr/src/bacula-gui-3.0.3# mv cd bweb
root@cari1:/var/www/bweb# chmod +x install_bweb
root@cari1:/usr/src/bacula-gui-3.0.3/bweb# ./install_bweb
root@cari1:/var/www/bweb# cp -rfp /usr/src/bacula-gui-3.0.3/bweb/cgi/* /usr/lib/cgi-bin/

Muy importante es revisar los permisos de bconsole y asegurarse de que en el bweb.conf se esté usando el binario que está en /sbin/bconsole 😉

Disfrutenlon 😛
1) Instalamos bacula
apt-get update
apt-get install bacula bacula-director-mysql bacula-sd-mysql bacula-doc
Nos pedirá la clave del root de la DB y la clave que se usará para el baculadirector.
2) Configurando File Daemon (FD)
El File Daemon, también se lo puede ver como el cliente, se instala en donde se hará el backup donde recuperará los archivos que serán backupeados y se los pasa al Storage Daemon (SD

8 thoughts on “Clearspace backup con bacula

  1. Saludos caballero gusto en escribirle, gracias por su material me ha sido muy útil. Una pregunta con respecto a la retención de la data. Sabemos que cuando se configuran los clientes se establece el tiempo de retención del Job y además de se determina el periodo de retención de los volúmenes.
    Ahora mi pregunta es ¿si se vence el tiempo de retención de un volumen que ocurre, se pierde la data que estaba almacenada en dicho volumen o el volumen deja de pertenecer a un pool o que pasa? me es importante saber ya que es un tema muy sensible.
    Muchas gracias, espero tu pronta respuesta.

    • Hola Álvaro, el gusto es mío al responderte, te recomiendo que mires este link
      Cómo te explica ahí (mucho más extenso) el Retention en el volumen empieza a contar a partir de que el Volumen esté marcado como Full o como Used, o sea, una vez que se llena el volumen, cuanto tiempo quieres que esos archivos se guarden?
      Una vez que pasó ese tiempo el volumen se vuelve a usar (eliminando todo lo que hay dentro), es por eso que es necesario tener al menos dos volumenes.
      Bacula no saca cosas de los volumenes, directamente hace bolsa un volumen y empieza a usar otro.
      Si están todos los volumenes sobre el mismo disco te combiene asignarles un tamaño para que en algún momento estén Full, esto lo puedes hacer desde la consola con un comando como este:
      update volume=bacula1 volstatus=Append slot=0 inchanger=no enabled=yes pool=Default volretention=”3 days” voluse=”0 mins” maxvoljobs=0 maxvolfiles=0 maxvolbytes=61038500 recyclepool=”Default”
      (maxvolbytes es la clave)
      Espero haber respondido tu pregunta.
      Un abrazo.
      MN

  2. Hola Matias, tengo unas preguntas respecto al siguiente mensaje: Bacula: Intervention needed for…
    ¿Cual es el problema? y ¿Como se puede solucionar?

    Muchas gracias, espero tu pronta respuesta.
    Saludos.

      • Matias estes es el error:

        Bacula: Intervention needed for backupAplicaciones.2010-09-21_22.00.00.05

        Job backupAplicaciones.2010-09-21_22.00.00.05 waiting.
        Please use the “label” command to create a new Volume for:
        Storage: “FileStorage” (/mnt/backups/volumen/)
        Pool: Aplicaciones
        Media type: File

          • A que se debe que se tiene que crear otro volumen? y que pasa con el que estaba, se borra?

            Saludos.

          • Si creas un nuevo volumen no se borra el viejo, es más, si borras el volumen no se borra físicamente el archivo hasta que lo borres tu. La razón más común para crear un segundo volumen es para forzar una segunda copia de Full, y para que, cuando se llene el disco puedas eliminar un volumen sin perder los datos del primero 😉

            Un saludo.
            MN

Comments are closed.