Una historia sobre backups, «Borg, la resistencia es inútil». Parte 3

Cloud

Trevenque Group » Blog » Desarrollo de Negocio » Una historia sobre backups, «Borg, la resistencia es inútil». Parte 3

Introducción

Hace unos días en mi meditado repaso de twitter matinal leía que sólo existen dos tipos de personas:

  • Aquellos que hacen Backup.
  • Aquellos que harán Backup.

En esta serie de posts sobre herramientas de Backup os he ido presentando, mezcladas entre distintas criaturas fantásticas, utilidades que os permitirán pertenecer al selecto club del primer grupo.

Hoy os traigo, con su criatura fantástica de rigor, una herramienta llamada BorgBackup, simplificado Borg. Se trata de un software de Backup con deduplicación, cifrado y compresión de datos.

Las principales características de Borg son:

  • Uso eficiente del espacio. Gracias a la deduplicación el espacio usado por los trabajos de copia se reduce.
  • Velocidad. El código fuente que se encarga de la deduplicación, compresión y cifrado está escrito en C.
  • Cifrado. Toda la información se puede cifrar mediante AES 256-bit, la integridad de la información es verificada mediante HMAC-SHA256 y el cifrado se realiza en el lado del cliente.
  • Compresión. Los datos pueden ser comprimidos opcionalmente mediante lz4, zstd, zlib o lzma.
  • Backup Off-site. Borg puede guardar tus backups en cualquier máquina que soporte el protocolo ssh.
  • Los repositorios de backup pueden ser montados como sistemas de ficheros.
  • Fácil instalación en multitud de plataformas.
  • Es una utilidad Open Source con licencia BSD.

Borg trabaja con repositorios de una forma parecida a la herramienta Restic que vimos en el primer post.

Guía rápida de uso

Una vez instalada la herramienta en nuestro sistema tendremos que dar de alta un repositorio para almacenar nuestros Backups, en este caso daremos de alta un repositorio local alojado en el directorio `/srv/backups` que almacenará el contenido de nuestro directorio `/home`.
# Inicializamos el repositorio e introducimos la clave
$ borg init --encryption=repokey /srv/backups
Enter new passphrase:
Enter same passphrase again:
Do you want your passphrase to be displayed for verification? : y
Your passphrase (between double-quotes): "ClaveGTK"
Make sure the passphrase displayed above is exactly what you wanted.
IMPORTANT: you will need both KEY AND PASSPHRASE to access this repo!
Use "borg key export" to export the key, optionally in printable format.
Write down the passphrase. Store both at safe place(s).
Como veis el repositorio ha quedado inicializado y nos solicita una contraseña para protegerlo, también nos recomienda guardar la clave privada con el que ha sido cifrado, ¡no seáis confiados con ésto! y guardadla a buen recaudo, ya sea su versión digital o impresa (`borg key export repo_path path/file.key` ó `borg key export repo_path –paper`).
Una vez inicializado el repositorio, que contendrá nuestros Backups, es hora de sacar el mandil y ponernos manos a la obra. Como ejemplo, haremos un Backup llamado «Jueves» y guardaremos el contenido del directorio `/home/fjfunes/documents`.
# Creamos un backup llamado 'Jueves' que guardará el directorio 'Documentos'
$ borg create /srv/backups::Jueves ~/Documentos
Enter passphrase for key /srv/backups:

# Ahora revisaremos el repositorio en busca de los backups que contiene
$ borg list /srv/backups
Enter passphrase for key /srv/backups:
Jueves Thu, 2018-09-27 23:06:54 

# Podemos ver la información del repositorio completo mediante el comando `info`
$ borg info /srv/backups
Enter passphrase for key /srv/backups:
Repository ID: 5cdd7d0faa555d07321ab35ec418d36c3d2f9375d33b0ed625235244dfbee46e
Location: /srv/backups
Encrypted: Yes (repokey)
Cache: /home/fjfunes/.cache/borg/5cdd7d0faa555d07321ab35ec418d36c3d2f9375d33b0ed625235244dfbee46e
Security dir: /home/fjfunes/.config/borg/security/5cdd7d0faa555d07321ab35ec418d36c3d2f9375d33b0ed625235244dfbee46e
------------------------------------------------------------------------------
Original size Compressed size Deduplicated size
All archives: 74.39 MB 52.41 MB 51.10 MB
Unique chunks Total chunks
Chunk index: 3619 3948

# Y por último podemos ver el contenido del archivo llamado 'Jueves'
$ borg list /srv/backups::Jueves
Enter passphrase for key /srv/backups:
drwxr-xr-x fjfunes fjfunes 0 Thu, 2018-09-27 23:03:24 home/fjfunes/Documentos
drwxr-xr-x fjfunes fjfunes 0 Sat, 2018-08-11 19:54:59 home/fjfunes/Documentos/devilbox
drwxr-xr-x fjfunes fjfunes 0 Thu, 2018-09-27 23:03:30 home/fjfunes/Documentos/devilbox/.git
drwxr-xr-x fjfunes fjfunes 0 Sat, 2018-08-11 19:54:16 home/fjfunes/Documentos/devilbox/.git/info
-rw-r--r-- fjfunes fjfunes 240 Sat, 2018-08-11 19:54:16 home/fjfunes/Documentos/devilbox/.git/info/exclude
drwxr-xr-x fjfunes fjfunes 0 Sat, 2018-08-11 19:54:16 home/fjfunes/Documentos/devilbox/.git/branches
drwxr-xr-x fjfunes fjfunes 0 Sat, 2018-08-11 19:54:16 home/fjfunes/Documentos/devilbox/.git/hooks
...
...
...

Como veis, es fácil realizar un Backup de un directorio. Aunque, en este caso, el repositorio sea local también podríamos utilizar un repositorio remoto mediante `ssh` utilizando la siguiente sintaxis al inicializarlo: `borg init –encryption=repokey ssh://user@host:path/to/repo`.

Automatizando Borg

Ahora que sabemos utilizar Borg para un uso manual, llega la parte trepidante, automatizarlo para que nos sea sumamente útil. Recordad: Los Backups que no se programan, acaban por no hacerse.
Crearemos un script bash que contenga lo siguiente:
# Fichero backup_con_borg.sh
#!/bin/sh
# Dirección del repositorio remoto (haremos uso de claves públicas para acceder)
export BORG_REPO=ssh://user@host/srv/backups
# Password del repo (ojo con los permisos!!)
export BORG_PASSPHRASE='ClaveGTK'
# helpers
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
info "Starting backup"
# Crearemos un backup de las carpetas más importantes
# cuyo nombre será el de la máquina en la que corremos el script:
borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--compression lz4 \
--exclude-caches \
--exclude '/home/*/.cache/*' \
--exclude '/var/cache/*' \
--exclude '/var/tmp/*' \
\
::'{hostname}-{now}' \
/etc \
/home \
/root \
/var \
backup_exit=$?
info "Pruning repository"
# Después de realizar la copia purgaremos el repositorio para mantener
# un esquema de backup que nos permita guardar 7 copias diarias,
# 4 semanales y 6 mensuales.
borg prune \
--list \
--prefix '{hostname}-' \
--show-rc \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \
prune_exit=$?
# código de salida
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
if ;
then
info "Backup and/or Prune finished with a warning"
fi
if ;
then
info "Backup and/or Prune finished with an error"
fi
exit ${global_exit}

Ahora, sólo tendríamos que agregar el fichero a nuestro `cron`, a la hora deseada para tener un sistema de Backup basado en la herramienta Borg.

Criaturas fantásticas

Os estaréis preguntando ¿dónde está en el post de la criatura fantástica, la gran ballena blanca asesina o el despiadado vampiro?.
Cuando planeaba esta serie de posts sobre herramientas de Backup y elegí entre la infinidad de opciones posibles, no me paré a revisar qué historia había detrás de Borg. Hace unos días, documentando el post, me encontré con que los Borg son un personaje del Universo Star Trek y el nombre viene de contraer la palabra «CyBorg».
Los Borg son una especie de civilización humanoide que combinan lo sintético con lo orgánico, lo que les da mejores capacidades mentales y físicas. Todos los Borg están conectados a través de su mente formando una colmena que es controlada por la Reina Borg. De esta forma, cuando un Borg muere, el resto de Borgs asumen sus conocimientos. Esto hace que puedan terminar el trabajo que estaban haciendo sin empezar de nuevo, convirtiéndolos en una especie sumamente eficientes a la hora de atacar o defenderse de un ataque. El cometido principal de los Borg es asimilar especies, incorporando en sí mismos las características de estas, para mejorar la calidad de la vida en el universo. Tras conocer un poco acerca de los Borg sólo me queda contaros que los creadores de la herramienta Borg se llaman así mismos «Colectivo Borg» como los integrantes de esta civilización que aparece en Star Trek.
Una frase utilizada por estas criaturas y que da título a este post:
«Somos los Borg. Bajen sus escudos y rindan sus naves. Sumaremos sus características biológicas y tecnológicas a las nuestras. Su cultura se adaptará para servirnos. La resistencia es inútil«.
Ya sabes, ¡no te resistas!, haz Backups y hoy, al menos, ¡hazlos con Borg!.

¿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