====== Bacula Backup ======
===== Descripción =====
Aplicativo para manejar backups
"... Bacula is a set of computer programs that permits the system administrator to manage backup, recovery, and verification of computer data across a network of computers of different kinds. Bacula can also run entirely upon a single computer and can backup to various types of media, including tape and disk.
In technical terms, it is a network Client/Server based backup program. Bacula is relatively easy to use and efficient, while offering many advanced storage management features that make it easy to find and recover lost or damaged files. Due to its modular design, Bacula is scalable from small single computer systems to systems consisting of hundreds of computers located over a large network. .."
===== Prerequistos =====
* Una instalación minimia de GNU/Linux (No es viable en Windows como server)
* Base de datos para almacenar catalogos ([[../../../../index.php?menuaction=wiki.uiwiki.view&page=MySQL%20-%20MariaDB|MySQL - MariaDB]] preferiblemente)
* Un servidor apache si se quiere usar la interfaz web de vision
* Un webmin si quiere la administración remota
===== Procedimiento =====
Bacula viene compuesto por muchos demonios los que deben ser instalados y configurados
* **Director** (bacula-dir): El coordinador de todo
* **Almacenamiento** (bacula-sd): El que pone todo en cintas o lo que sea
* **Archivos** (bacula-fd): Programa que envia archivos a almacenamiento y corre en los clientes (es el agente)
* **Bases de datos** (Catalogos) : Almacena los catalgos en una base de datos
* **Consola** (bacula-console): Donde mirar que ocurre
==== A. Instalación básica ====
Consiga los paquetes, algunas distribuciones los traen separados (bacula-dir, bacula-sd, ..etc) otras vienen un paquete que incluye todos los demonios ahi mismo (bacula-MySQL - MariaDB ..).\\
\\
\\
Por ejemplo en Debian 6 con MySQL - MariaDB 5.1\\
\\
ii bacula-client 5.0.2-2.2 network backup, recovery and verification - client meta-package\\
ii bacula-common 5.0.2-2.2+b1 network backup, recovery and verification - common support files\\
ii bacula-common-MySQL - MariaDB 5.0.2-2.2+b1 network backup, recovery and verification - MySQL - MariaDB common files\\
ii bacula-console 5.0.2-2.2+b1 network backup, recovery and verification - text console\\
ii bacula-director-common 5.0.2-2.2+b1 network backup, recovery and verification - Director common files\\
ii bacula-director-MySQL - MariaDB 5.0.2-2.2+b1 network backup, recovery and verification - MySQL - MariaDB storage for Director\\
\\
\\
Por ejemplo en Debian 7 con PostgresSQL 9.1\\
\\
ii bacula-common 5.2.6+dfsg-9 amd64 network backup service - common support files\\
ii bacula-common-pgsql 5.2.6+dfsg-9 amd64 network backup service - PostgreSQL common files\\
ii bacula-console 5.2.6+dfsg-9 amd64 network backup service - text console\\
ii bacula-director-common 5.2.6+dfsg-9 amd64 network backup service - Director common files\\
ii bacula-director-pgsql 5.2.6+dfsg-9 amd64 network backup service - PostgreSQL storage for Director\\
==== B. Configuración ====
=== B.1 Crear y llenar la BD ===
Una vez instala el servidor (bacula-dir) es necesario configurar la base de datos con la que se va a operar. Aqui consideramos que se usa MySQL - MariaDB y este provee un conjunto de scripts para hacer todos los proceso. En la ruta /etc/bacula/scripts se encuentran todos pero para usarlos toca editar los scripts para ingresar las contrasenhas:
grant_mysql_privileges, create_mysql_database y make_mysql_tables lo siguiente
- en la lines donde aparezca "....MySQL - MariaDB ...." colocar "...MySQL - MariaDB -p -u root ......" para que pida contraenha de root
$> cd /etc/bacula/scripts/\\
$> ./create_mysql_database\\
$> ./make_mysql_tables\\
$> ./grant_mysql_privileges
Con esto ya esta la bae de datos\\
\\
Si quereien con postgresql es muy parecido: donde esta psql ponga "psql -U baculausr". Una referencia http:%%//%%www.bacula.org/manuals/en/catalog/catalog/Installi_Configur_PostgreS.html
=== B.2. Director (bacula-dir) ===
Lo primero es conectarlo con la base de datos. En el archivo de configuracion bacula-dir.conf en el aparte de "Catalog" se encuentra la configuracion de la base de datos\\
\\
dbname = "bacula"; DB Address = "127.0.0.1"; dbuser = "baculausr"; dbpassword = "ieTh6Ook"\\
\\
En este momento ya se puede probar. Inicie el servidor dir y si levanta puede correr bconsole y dar un "status dir" y ver si corre\\
\\
Ahora podemos empezar a definir los Fileset estandares por ejemplo\\
\\
\\
* Los nombres se toman cuando se instala y lo importante es dejar todo consistente entre los archivos de configuracion de los tres demonios (sd, fd, dir).\\
* La instalación por defecto tiene un documento que puede usarse. Lo importente son los nombres y las contraseñas entre el director, la consola, el SD, FD.
=== B.2. Almacenamiento (Storage bacula-sd) ===
Por defecto el sistema coloca un sistema de almacenamiento en archivo. Si su server SD es otro, pues copie el archivo alla y cambie el nombre el directorio.
Si es cinta ... Aqui hay una cosa que se debe hacer con anterioridad, que es probar la cinta y su compatibilidad.
Una vez se ha adaptado el archivo (bacula-sd.conf) a las particularidades de la cinta en cuestion, se usa el comando btape para probar y se le da test para probar
> > btape -c /etc/bacula/bacula-sd.conf /dev/st0\\
> Tape block granularity is 1024 bytes.\\
> btape: butil.c:272 Using device: "/dev/st0" for writing.\\
> btape: btape.c:338 open device "Cinta-1" (/dev/st0): OK\\
> > *test
\\
Aqui saca todos los resultados de las pruebas .. se espera todo OK\\
\\
Si quiera puede darle help, para que le muestre los comandos y si tiene un autochanger (robot) como en TIGO .. pues se le puede dar para que lo pruebe tambien (autochanger).
Otra es testear el robot /etc/bacula/mtx-changer /dev/sg10 load 1 /dev/st0 0\\
El archivo de configuracion tiene varios bloques. (Ejemplo de OLA)\\
Mi identidad como demonio
> Storage { # definition of myself\\
> Name = proc1-sd\\
> SDPort = 9103 # Director's port\\
> WorkingDirectory[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=WorkingDirectory|?]] = "/var/bacula"\\
> Pid Directory = "/var/run"\\
> Maximum Concurrent Jobs = 20\\
> }
nombre del director(es) que tiene acceso
> Director {\\
> Name = midas-dir\\
> Password = "9jByv3GfzXgJEZsIe[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=GfzXgJEZsIe|?]]1XcXIskcevZbE[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=XcXIskcevZbE|?]]8Bkyn12adJ8ggG"\\
> }
>
> Director {\\
> Name = midas-mon\\
> Password = "jUp0KKlnt7P3Lc5h2lNV92PGaFMtGYXOk[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=PGaFMtGYXOk|?]]8T1BngZK[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=BngZK|?]]3k7"\\
> Monitor = yes\\
> }\\
>
El dispositivo de almacenamiento
> Device {\\
> Name = Cinta\\
> Media Type = Cinta\\
> Archive Device = /dev/st0\\
> AutomaticMount[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=AutomaticMount|?]] = yes; # when device opened, read it\\
> AlwaysOpen[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=AlwaysOpen|?]] = yes;\\
> RemovableMedia[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=RemovableMedia|?]] = yes;\\
> RandomAccess[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=RandomAccess|?]] = no;\\
> Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"\\
> Changer Device = /dev/sg10\\
> AutoChanger[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=AutoChanger|?]] = yes\\
> Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=TapeAlert|?]]|cat'"\\
> }\\
Este ultimo incluye el robot de cambio de cintas (Changer).
3. Archivos (bacula-fd)
Tome la configuracion, digale quien es el servidor y las contrasenhas adecuadas
===== Otras configuraciones =====
==== 1. Bweb ====
Cuando se instala el rpm .. aun no le da a la base de datos. Agregue la contrasenha en /etc/bacula/bweb.conf
%%__%%Update your configuration to use the correct tpl directory (You are using devel tpl)%%__%%
Aqui toca cambiar el archivo de /usr/share/bacula/bweb/tpl .. que esta mal .. toca traerlo de otro lado (ejm zion )
Ahora si en Configuracion lo puede poner en Spanish
-- http:%%//%%tech.watts.co.nz/ubuntu-bacula/ --
==== 2. Bacula-web ====
[Wed May 26 11:26:37 2010] [error] [client 192.168.8.210] PHP Fatal error: Smarty error: unable to write to $compile_dir '/usr/share/bacula/bacula-web/html/templates_c'. Be sure $compile_dir is writable by the web server user. in /usr/share/bacula/bacula-web/html/external_packages/smarty/Smarty.class.php on line 1088\\
Suele ser problema de permisos en la direccion..que no pertenece a apache:apache
chown -R apache:apache templates_c/
En los ultimos estoy teniendo un problema con DB_error::fetch_row() y no he podido sacarlo.
===== Trucos =====
==== 1. Realizar backup de archivos especificos ====
Por ejemplo se necesita hacer backup unicamente archivos PDF que se encuentran en el siguiente path "D:/Demo", \\
el file set que se necesita es el siguiente:
**Fileset** { \\
Name="**MyPdf**" \\
Include{ \\
Options{ \\
WildFile=*.pdf \\
} \\
Options{ \\
wildfile=*.* \\
exclude=yes \\
} \\
File = D:/Demo\\
} \\
}
==== 2. Bakup en caliente de MySQL - MariaDB ====
http:%%//%%matias.neiff.com.ar/2009/12/02/backup-en-caliente-de-MySQL - MariaDB-con-bacula/ --
http:%%//%%dev.MySQL - MariaDB.com/doc/refman/5.0/en/mysqlhotcopy.html --
http:%%//%%www.mail-archive.com/bacula-users@lists.sourceforge.net/msg31605.html --
==== 3. Bakup en caliente de Zimbra ====
http:%%//%%matias.neiff.com.ar/2009/12/02/zimbra-backup-con-bacula/ --
==== 4. Bakup de Clearspace ====
http:%%//%%matias.neiff.com.ar/2009/11/26/clearspace-backup-con-bacula/ --
==== 5. Bakup de MSSQL ====
http:%%//%%wiki.bacula.org/doku.php?id=application_specific_backups:microsoft_sql_server --
http:%%//%%www.backupcentral.com/phpBB2/two-way-mirrors-of-external-mailing-lists-3/bacula-25/ms-sql-database-backup-82851/ --
==== 6. Bakup de Oracle ====
http:%%//%%osdir.com/ml/sysutils.backup.bacula.devel/2004-09/msg00031.html --
==== 7. Configuración orientada a Webmin (Web GUI) ====
A partir de la versión 1.360 de Webmin se incluye dentro de Webmin el modulo de Bacula, ubicado en la categoria Sistema. Para ponerlo en funcionamiento es necesario editar el modulo, cambiando el tipo de base de datos a usar a MySQL - MariaDB (por defecto a SQLite)
Puesto que la configuración desde el punto de vista del usuario final es mucho mas cómoda bajo una interfaz Web que los comandos de una interfaz texto, se expone a continuación la forma en la que de puede gestionar un 90% de la herramienta bajo el módulo Webmin.
Una vez teniendo bacula instalado y el módulo en Webmin funcional, realice los siguientes pasos:
Antes de iniciar la configuración en Webmin, tenga en cuenta los siguientes pasos:
* Inicie la configuración en los clientes: Debe estar ya instalado y configurado el software cleinte en las maquinas, configurado de la siguiente manera (en el ejemplo una configuración de cliente Windows XP):\\
* FileDaemon { **# this is me**\\
Name = demo1-fd **#Nombre del cliente**\\
FDport = 9102 **# where we listen for the director**\\
WorkingDirectory = "C:\\\\Documents and Settings\\\\All Users\\\\Datos de programa\\\\Bacula\\\\Work" **# Se deja por defecto**\\
Pid Directory = "C:\\\\Documents and Settings\\\\All Users\\\\Datos de programa\\\\Bacula\\\\Work" **#Se deja por defecto**\\
#Plugin Directory = "C:\\\\Archivos de programa\\\\Bacula\\\\bin\\\\fdplugins" **#Se deja por defecto**\\
Maximum Concurrent Jobs = 5 **#Se deja por defecto, luego se puede modificar para temas de afinamiento**\\
}\\
\\
#\\
# List Directors who are permitted to contact this File daemon\\
#\\
Director {\\
Name = sasterisk-dir **#Nombre del servidor donde esta rl servicio de director**\\
Password = "wxp" **#Password propio del cliente, debe colocarse igual en bacula-dir del servidor bacula**\\
}\\
* Verifique que el servicio (bacula file service en Windows, bacula-fd en Linux) este arriba, tanto en servidor como en el cliente (bacula-dir en linux)
* realice pruebas de conectividad desde el cliente y desde el servidor, haciendo un telnet al puerto 9102. Debe reportar una pantalla en blanco y al escribir cualquier caracter salir al prompt.
* Verifique que funcione adecuadamente la resolución de nombres(que haya una adecuada resolución de nombres de maquina - IP en ambos sentidos), en el peor de los casos realice la edición del archivo hosts tanto en clientes como en el servidor.
Ingrese al módulo Bacula, verficando en la parte inferior que los servicios estén funcionales (UP en verde para Director, Storage y FD)
**Configuración de clientes:** Ingrese al icono de "Backup Clients", y haga click en "[[http://192.168.8.90:10000/bacula-backup/edit_client.cgi?new=1|__Add a new backup client.__]]"
Aparecen los campos "**Client FD Name", "Bacula FD Password" **y **"Hostname or IP Address".** Para el primer campo se puede colocar cualquier string que describa al cliente, no necesariamente el que se define en el archivo de configuración del cliente. En el segundo campo, la clave SI debe ser igual a la que se define en el cliente. Para el tercer campo se coloca el nombre de maquina o IP del cliente. Los otros campos pueden inicialmente dejarse con el valor por defecto.
Nuevamente en la lista de clientes, hacer click en el usuario recién creado. En la parte inferior de la información de config del cliente aparece el botón "**Show status"**. al hacer click sobre él, debe aparecer un mensaje con el nombre del cliente bacula y su versión. Ejemplo: **Status from wxp : demo1-fd Version: 3.0.2 (18 July 2009) VSS Linux Cross-compile Win32**
Una vez se tenga esto, se garantiza la conexión bidireccional entre el cliente y el servidor. Repetir estos pasos para los demas clientes
**Configuración de Filesets:** Es la configuración de "a que se le va a hacer Backup" para cada cleinte, o tambien como plantilla para varios clientes. Para realizar esta configuración, hacer clieck en el icono "Filesets" dentro del modulo de Backup de Webmin. Es muy fácil colocar la información del fileset, teniendo eso sí en cuenta lo siguiente:
* Para Filesets Windows los paths van con "Slash" y no con Backslash", y la ruta es completamente "Case Sensitive"
* Se pueden colocar fácilmente los arhcivos a excluir, pero si se necesitan filtros "complejos" si se deben hacer por la linea de comandos o editando directametne el archivo de configuración /etc/bacula/bacula-dir.conf
**Configuración de Almacenamiento:**
* **Configuración de Storage Devices**: es la definición de "en donde"voy a guardar los Backup y "de donde" voy a recuperarlos. La configuración, al igual que la configuración de Filesets, es muy sencilla, iniciando por la configuración del "Storage daemon": se configura el nombre de maquina donde esta el demonio, el puerto y el path de trabajo, normalmente se utiliza el mismo servidor, pero se puede configurar otra maquin sin mayor problema, solamente tener en cuenta resolucion de nombres - IP. Luego de la config del demonio se configuran los dispositivos en "Storage Devices": Se coloca el nombre del "dispositivo" o lugar de almacenamiento, el dispositivo (por ejemplo /dev/st1)o el path al directorio donde se almacenarán los archivos de Backup (por ejemplo /var/BACULA). Luego se especifica el nombre del tipo de medio (por ejemplo "backups_incrementales") y por ultimo las opciones de si es un dispositivo de acceso aleatorio, etiquetado automático, si se monta automaticamente, si es un dispositivo removible y si se mantiene siempre abierto. Para un almacenamiento en disco (por defecto) la confiruación es: Automaticamente etiquetar medios, medio de acceso aleatorio, se monta automaticamente, NO es un medio removible y NO se mantiene el medio abierto.
* Algunos tips a tener en cuenta: al crear los dispositivos, ya deben estar configurados a nivel de sistema operativo; en el caso particular de medios definidos en disco duro el UID - GID debe ser bacula:disk y de permisos 755. Otro tema a revisar es lo siguiente: Se pueden tener definidos varios "storage daemons", siempre y cuando esten configurados de la siguiente manera: en bacula-dir, seccion "Storage" el campo de dispositivo ("Device = ") debe ser igual al campo de nombre ("Name =") en la sección de dispositivos ("Device {") del archivo bacula-sd.conf; y el tipo de medio ("Media Type = ") en bacula-dir seccion "Storage"debe ser igual al mismo campo en la sección de dispositivos ("Device {") del archivo bacula-sd.conf. Se recomienda tener un muy buen espacio en disco si es la opción a utilizar para el almacenamiento de información.
* **Configuración de Pools** **- volúmenes**: agrupaciones lógicas de archivos (o cintas) donde se almacena finalmente la información. En Webmin basta con ir al icono de "Volume Pools", adicionar un nuevo pool dándole un nombre, el tipo de pool (Backup) y el período de retención. Tener en cuenta lo siguiente:Para especificar el tamaño máximo de los volumenes dentro de un pool, se debe editar el archivo de configuración bacula-dir, en la sección Pools el parámetro "Maximum Volume Bytes", asi como el prefijo de etiquetado automático con el parámetro LabelFormat = "Prefijo". de esta forma los volúmenes que se irán creando tendrán el nombre "Prefijo0001", "Prefijo0002" y así sucesivamente. Esta configuración no puede hacerse a través de Webmin. Si los volúmenes se van a manejar de forma automática, con el proceso anterior es suficiente, sin embargo se pueden etiquetar manualmente los volumenes de un pool, asi como borrarlos.**\\
**
* Parametrización de períodos de retención, tamaño máximo y auto labeling en pools: Ver el item anterior de configuración de pools
**Configurar programación de Backups (Schedules):** es "en que momento se ejecutan los Backups". En Webmin se configuran el nivel de Backup (Full, incremental, diferencial), el volumen donde de alojarán los Backups y la definición de dias / horas en la que se ejecuta. Para cada Schedule se pueden configurar hasta 4 programaciones diferentes.
**Configurar Jobs**: Es donde finalmente todas las configuraciones anteriores tienen lugar; un Job especifica todo el conjunto de variables que tiene un Backup (o una restauración): dispositivos, programaciones, Filesets y clientes. A través de la herramienta Webmin en el icono "Jobs" se seleccionan todas estas opciones, solamente se define el nombre del Job.
En este punto ya se pueden realizar todas las configuraciones de clientes, Filesets, Pools, Schedules y Jobs que requiera la estrategia de Backups.
- \\
==== 8 Upgrade ====
Basta con subir la base de datos\\
\\
/usr/share/bacula-director/update_mysql_tables -h 192.168.8.216 -u bacuser -p bacula9\\
===== Problemas =====
==== 1. No compila ====
Algunas versiones son sensibles a cambios en /etc/redhat-release .. si por ejemplo es un CentOS[[../../../../index.php?menuaction=wiki.uiwiki.edit&page=CentOS|?]] y le metio la mano para que luciera como un Enterprise Edition .. no va a compilar. Restablezca temporalmente al original y funcionara.
Otra posibilidad es con los usuales SRC RPMs no compilan normalmente sino que necesitan un par de definiciones para compilar bien
rpmbuild --rebuild --define "build_centos5=1" --define "build_mysql=1" bacula.src.rpm
o para incluir x86_64 incluya --define "build_x86_64=1"'
==== 2. /dev/st0 ocupado .. ====
Si cuando usa mt o btape para probar y sale ocupado. .. Pendejo baje el bacula-sd .. este ocupa el dispositivo.
==== 3. "mtx-changer /dev/sg16 load 3 /dev/st0 0" no funciona ====
Cuando trata de cargar una cinta esta no esta "mtx-changer /dev/sg16 loaded 3 /dev/st0 0" siempre terminamostrando lo mismo.
Toca meterle una descargador en el script antes
load)\\ - by skina \\ ${MTX} -f $ctl unload\\ - by skina \\ debug "Doing mtx -f $ctl load $slot $drive"\\ ${MTX} -f $ctl load $slot $drive\\ rtn=$?\\ - \\ - Increase the sleep time if you have a slow device \\ - or remove the sleep and add the following: \\ - wait_for_drive $device \\ sleep 15\\ exit $rtn\\ ;;\\==== 4. Como marcar las cintas automaticamente ==== Cuando esta en un robot que tiene codigo de barras, se pueden marcar con\\ el mismo codigo de barras con ==== 5. El cliente se queda esperando a conectarse con el storage ==== Las bitacoras del servidor muestran el siguiente mensaje: 48 Full <-nombre_del_cliente->.2009-08-25_10.42.02_05 is waiting for Client <-nombre_del_cliente->-fd to connect to Storage File Debe garantizar la resolucion de nombres desde el cliente hacia el servido bacula. ==== 6. No sube el servicio de windogs (XP) ==== Es un problema usualmente con la ubicacion del archivo de configuracion .. debe estar en documents and settings/all-users/datos de programa/Bacula http:%%//%%www.bacula.org/en/dev-manual/main/main/Windows_Version_Bacula.html -- ==== 7. No sube el servicio en winbugs (Seven) ==== Es un problema usualmente con la ubicacion del archivo de configuracion .. debe estar en la carpeta oculta C:\\ProgramData\\Bacula\\ \\ %%**%% OJO tambien con montar versiones de 32bits en 64bits ..no van a funcionar.\\ ==== 8. Se vive congelando el servidor. ==== \\ Encuentro un caso igualito donde dice que si se pone un indice en la BD la cuestion mejora. Lo hago a ver que ocurre\\ \\ http:%%//%%www.backupcentral.com/phpBB2/two-way-mirrors-of-external-mailing-lists-3/bacula-25/bacula-director-freezing-83635/ ===== Referencias ===== \\ - Tutorial muy completo http:%%//%%webmodelling.com/webbits/miscellaneous/bacula.aspx\\ - http://www.bacula.org/en/dev-manual/Brief_Tutorial.html -- - Guia muy vacana y en Spañol http://crysol.inf-cr.uclm.es/node/549 -- - Repostorio de RH5 http:%%//%%www.pramberger.at/peter/services/repository/rhel5/ --\\ \\ - Conjunto de trucos https:%%//%%workaround.org/bacula-cheatsheet - Un wiki completo y bonito http:%%//%%lucasmanual.com/mywiki/Bacula\\ \\ - Baculum 9 https:%%//%%www.bacula.org/9.0.x-manuals/en/console/Baculum_API_Web_GUI_Tools.html\\ FIN ============================================================== 29-Mayo-2006 J.E.Gomez v1.0 Primera version12-Agosto-2009 Giovanni Ramirez\\ 27-Agosto-2009 Jhon Fabian Saganome\\ 23-Diciembre-2010 J. C. Pineros C. Configuracion cliente Winbugs XP y 7 ---- Advertencia Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal. ----