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 😉
Tags: bacula clearspace, bacula instalacion, Clearspace Backup, debian bacula, linux bacula
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
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.
Hola José Luís, pásame el error completo y te puedo dar una mano.
Saludos.
MN
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
Hola José Luís, tienes que entrar a la cosola y inicializar un volumen, con el comando label.
Saludos.
MN
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