Una historia sobre backups, «he cruzado océanos de tiempo para encontrarte». Parte 2

Cloud

Trevenque Group » Blog » Desarrollo de Negocio » Una historia sobre backups, «he cruzado océanos de tiempo para encontrarte». Parte 2

Todos tenemos una herramienta o programa ‘fetiche’, que hemos estado utilizando día tras día en nuestro trabajo desde tiempos inmemoriales.

Quién no recuerda con cierta nostalgia el famoso Comandante Norton, las utilidades de compresión en línea de comandos arj o esas versiones de la herramienta Ghost para hacer copias de nuestros discos duros y mantener nuestra información a buen recaudo en caso de catástrofe, que tantas veces nos salvaron el día.

Quizás, a día de hoy, estas utilidades no sean de uso común pero siempre encontramos una nueva herramienta, un nuevo cli o una nueva app que guarda parte de su esencia.

Antes de que me tildéis de abuelo cebolleta y de irme con las cabras al monte (y con razón) os explicaré que una de esas herramientas que han sido imprescindibles para mi día a día, se llama Bacula, un sistema centralizado de backup multiplataforma desarrollado por Kern Sibbald; y de la que os hablaré a continuación.

Los componentes de Bacula

Bacula está formado por cuatro componentes principales:

  • Director Daemon
  • Storage Daemon
  • File Daemon
  • Catalog

El Director Daemon se encarga de gestionar al resto de componentes y de planificar, ejecutar y almacenar las copias de seguridad según la agenda de copia que nosotros le hayamos configurado. El cliente de copia llamado File Daemon provee de los datos de la copia al Storage Daemon que guarda y deja un registro en el Catalog para su posterior uso, recuperación, reciclado, etc.

El componente Catalog puede ser un SGDB al uso, tal como: MySQL o PostgreSQL. Normalmente suelo recomendar esta última por su capacidad y facilidad de mantenimiento.

La configuración se realiza mediante ficheros donde se definen cada uno de los componentes, sus puertos de escucha, sus distintas opciones y los comportamientos, que nosotros queramos definir a la hora de configurar un sistema de copia: frecuencia, origen, destino, tipo de backup, compresión, cifrado, etc.

Aunque la curva de aprendizaje que requiere la configuración de un sistema de backup como Bacula es algo alta, comparada con la utilidad restic de nuestro anterior post, su capacidad de personalización y su funcionamiento, verdaderamente rock solid, son sus puntos fuertes.

Bacula nos permite guardar datos de sistemas, tan distintos como: Solaris, IRIX, todos los sabores de Unix BSD y, por supuesto, Linux y Microsoft Windows. Para este último, la empresa Bacula Systems (la empresa detrás del proyecto Bacula) provee unos binarios para el File Daemon que nos permitirán copiar nuestras máquinas de trabajo sin ningún tipo de problema. El almacenamiento lo podemos realizar sobre unidades de cinta, discos duros o incluso, mediante plugins, sobre almacenamiento Amazon S3.

Con respecto a medias de seguridad irrenunciables, hoy en día, a la hora de implantar un sistema de backup, Bacula incluye soporte TLS para la comunicación entre sus componentes, así como  los distintos File Daemon, o clientes de copia que configures dentro del sistema. El cifrado de los datos se puede configurar mediante algoritmos como AES128/192/256 y el hash de los datos se realiza mediante SHA1/SHA256.

Una de las características más interesantes añadidas a este proyecto es la deduplicación de los datos o, como se llama en Bacula, deduplicación en volúmenes alineados. Esta característica permite un ahorro considerable de espacio a la hora de almacenar grandes cantidades de información.

Por último, y quizás una parte de las más importantes del proyecto, es su extensa y detallada documentación, así como una comunidad activa y dummy-friendly (algo que se agradece enormemente si os tenéis que enfrentar al despliegue de un proyecto de backup con Bacula y es la primera vez que oís hablar del proyecto).

Bacula en funcionamiento

La interfaz por defecto para gestionar un sistema Bacula es el cli bconsole con el que podremos operar el sistema desde la más básica funcionalidad hasta la más compleja de las restauraciones. Aunque existen otras interfaces de tipo web que funcionan y vienen incluidas en el proyecto, la utilidad bconsole es la herramienta ideal por su simplicidad y su facilidad de uso.

Algunos ejemplos de la interfaz de administración:
# consultando el estado del Director Daemon
*status
Status available for:
1: Director
2: Storage
3: Client
4: Scheduled
5: Network
6: All
Select daemon type for status (1-6): 1
betelgeuse.gtk.local-dir Version: 9.0.6 (20 November 2017) amd64-portbld-freebsd11.1 freebsd 11.1-RELEASE-p10
Daemon started 03-Jun-18 20:20, conf reloaded 03-Jun-2018 20:20:49
Jobs: run=627, running=0 mode=0,0
Heap: heap=0 smbytes=257,715 max_bytes=535,768 bufs=1,182 max_bufs=1,618
Res: njobs=38 nclients=13 nstores=4 npools=22 ncats=1 nfsets=29 nscheds=13
Scheduled Jobs:
Level Type Pri Scheduled Job Name Volume
===================================================================================
Incremental Backup 10 06-Aug-18 21:00 GTKfjfunes *unknown*
Incremental Backup 10 06-Aug-18 21:00 GTK-dc-primavera *unknown*
Full Backup 11 06-Aug-18 23:10 BackupCatalog Vol-0203
====
Running Jobs:
Console connected using TLS at 06-Aug-18 19:04
No Jobs running.
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
10488 Incr 102 71.01 M OK 03-Aug-18 22:24 GTKfjfunes
10489 Full 1 3.394 G OK 05-Aug-18 23:12 BackupCatalog
====
# ejecución de un trabajo de copia incremental sobre el cliente gtk-scanserver-fd
*run
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
1: GTKDC-servidor
2: GTKScanFolder
Select Job resource (1-2): 2
Run Backup job
JobName: GTKScanFolder
Level: Full
Client: gtk-scanserver-fd
FileSet: GTKScanFolder
Pool: Default (From Job resource)
Storage: LocalChgr (From Job resource)
When: 2018-08-06 19:25:01
Priority: 10
OK to run? (yes/mod/no): mod
Parameters to modify:
1: Level
2: Storage
3: Job
4: FileSet
5: Client
6: When
7: Priority
8: Pool
9: Plugin Options
Select parameter to modify (1-9): 1
Levels:
1: Full
2: Incremental
3: Differential
4: Since
5: VirtualFull
Select level (1-5): 2
Run Backup job
JobName: GTKScanFolder
Level: Incremental
Client: gtk-scanserver-fd
FileSet: GTKScanFolder
Pool: Default (From Job resource)
Storage: LocalChgr (From Job resource)
When: 2018-08-06 19:25:01
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=10498
# resultado de la ejecución del trabajo de copia incremental
06-Aug 19:25 betelgeuse.gtk.local-dir JobId 10498: Bacula betelgeuse.gtk.local-dir 9.0.6 (20Nov17):
Build OS: amd64-portbld-freebsd11.1 freebsd 11.1-RELEASE-p10
JobId: 10498
Job: GTKScanFolder.2018-08-06_19.25.10_20
Backup Level: Incremental, since=2018-08-03 22:00:06
Client: "gtk-scanserver-fd" 7.4.0 (16Jan16) Microsoft (build 9200), 64-bit,Cross-compile,Win64
FileSet: "GTKScanFolder" 2016-06-15 19:40:54
Pool: "GTK-inc" (Fjrom Job IncPool override)
Catalog: "MyCatalog" (From Client resource)
Storage: "LocalChgr" (From Pool resource)
Scheduled time: 06-Aug-2018 19:25:01
Start time: 06-Aug-2018 19:25:17
End time: 06-Aug-2018 19:25:54
Elapsed time: 37 secs
Priority: 10
FD Files Written: 5
SD Files Written: 5
FD Bytes Written: 38,815 (38.81 KB)
SD Bytes Written: 39,941 (39.94 KB)
Rate: 1.0 KB/s
Software Compression: 73.9% 3.8:1
Comm Line Compression: None
Snapshot/VSS: yes
Encryption: no
Accurate: no
Volume name(s): GTK-Incremental-2018-07-30
Volume Session Id: 585
Volume Session Time: 1528402423
Last Volume Bytes: 40,796 (40.79 KB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK

Estos son sólo algunos de los comandos que podemos ejecutar en la consola bconsole.

La longitud del post y la cierta complejidad de la herramienta en sí, me impide hacer una descripción completa del proceso de instalación, configuración y puesta en marcha de un sistema Bacula pero al final disponéis de enlaces que os llevará a otras presentaciones. Espero que os sean de ayuda a la hora de adentraros en su uso.

«He cruzado océanos de tiempo para encontrarte», es la frase que el Conde Drácula pronuncia en la escena de la película «Drácula, de Bram Stoker» que dirigió Francis Ford Coppola donde Gary Oldman, con una prominente perilla, rapta a Mina (Winona Ryder) con la intención de morderla en el cuello y hacerla inmortal.

Si habéis sentido también el mordisco de la curiosidad, el mismo que sentí yo cuando buscaba una herramienta fiable y sólida para hacer backups de mi información, podéis sentir la satisfacción de la inmortalidad, no la vuestra, sino la de vuestros datos siempre a salvo gracias a Bacula.

Más información

White Papers de Bacula

Manuales de uso

Presentación sobre Bacula en la Oficina de Software Libre de Granada

¿Te ha gustado? ¡Compártelo!

Logo Trevenque

trevenque group

Ofrecemos un conjunto de servicios completos para que puedas desarrollar tu negocio, gestionar tus datos de manera inteligente y tomar decisiones rentables.

Deja un comentario

Artículos similares

Sigue de cerca la actualidad de Grupo Trevenque y las últimas tendencias tecnológicas y de Business Intelligence.

Ver todas las noticias