Respaldos incrementales con Duply & Duplicity


Realizar respaldos de la información de tu servidor es una de las tareas más importantes para garantizar la integridad y recuperación de los datos ante un posible fallo o situación donde el sistema se vea comprometido.

Respaldos incrementales en Ubuntu con Duply y Duplicity

Los respaldos de manera incremental son una manera eficiente y en ocasiones más económica para resguardar datos, ya que durante cada ejecución solo se envian los datos que han sido modificados evitando el envio completo de toda la información durante cada ciclo, disminuyendo considerablemente la cantidad de datos transferidos.

Duply funciona como – frontend – de Duplicity y simplifica su uso. Duplicity es una aplicación basada en Python y es el módulo encargado de realizar los respaldos hacia un repositorio externo.

* Actualmente son soportados: Amazon S3, Backblaze B2, DropBox, FTP, GIO, Google Docs, Google Drive, HSI, Hubic, IMAP, local filesystem, Mega.co, Microsoft Azure, Microsoft Onedrive, par2, Rackspace Cloudfiles, rsync, Skylabel, ssh/scp, SwiftStack, Tahoe-LAFS, WebDAV.

En Webinoly ya se encuentra instalada esta herramienta. Además contamos con comandos para automatizar los respaldos, por lo que no es necesario que sigas este tutorial, consulta la documentación de Webinoly.

Instalación

sudo apt-get install duplicity duply

Dependiendo el tipo de repositorio destino de los respaldos pudiéramos requerir la instalación de módulos o librerías adicionales de Python, los cuales podemos consultar en la documentación oficial. En este ejemplo usaremos AWS S3 para resguardo de los respaldos, por lo tanto es necesario instalar boto:

sudo apt-get install python3-boto3

* En la documentación encontrarás versión 7 y 8. A partir de Ubuntu 20.04 (Focal Fossa) se usa la versión 8 (python 3) de manera predeterminada. Para versiones anteriores se usa la 7 (python 2) y en el caso de boto deberá usarse el paquete python-boto.

Configuración

Creamos un perfil de configuración:

duply MyProfile create

El perfil es creado en el directorio del usuario en la carpeta ~/.duply/ donde encontraremos el archivo “conf”.

Editamos el archivo de configuración.

nano /home/user/.duply/MyProfile/conf

En este ejemplo vamos a configurar un bucket S3 (Amazon Web Services) como repositorio destino de los respaldos.

Buscamos y modificamos las siguientes lineas en el archivo de configuración:

GPG_KEY='disabled'
TARGET='boto3+s3://bucketname/folder'
SOURCE='/var/www'

Modificamos el TARGET e introducimos los datos de nuestro bucket S3.

* En el caso de usar versiones de Ubuntu anteriores a 20.04, el TARGET debe ser s3+http://bucketname/folder' y se debe incluir el parametro DUPL_PARAMS="$DUPL_PARAMS --s3-use-new-style " al final del archivo de configuración de Duply.

Si nuestro servidor esta hospedado en AWS es recomendable que el bucket S3 se encuentre en una región distinta, de esta manera en el remoto caso de una falla general del datacenter nuestro respaldo se encontrará a salvo y teóricamente disponible para su recuperación.

Aquí el listado de las URL o Endpoints de las diferentes regiones del servicio S3 en AWS.

En la linea SOURCE configuramos la carpeta que deseamos respaldar. Podemos definir este parámetro de manera mas detallada con el uso del archivo “exclude” que explicaremos mas adelante.

En las versiones recientes de Duply/Duplicity ya no soporta o reconoce las credenciales de AWS en el archivo de configuración. Ahora es necesario crear un archivo de configuración de boto donde introduciremos los datos de AWS.

Creamos un archivo llamado “.boto” y lo guardamos en el directorio raiz del usuario /home/user/.boto como en el siguiente ejemplo.

[Credentials]
aws_access_key_id = <your_access_key_here>
aws_secret_access_key = <your_secret_key_here>

O aún mejor, si el servidor es una instancia EC2 en AWS podemos omitir el uso de credenciales si la instancia tiene adjunto un IAM Role con los permisos suficientes.

Parámetros adicionales de configuración:

  • MAX_AGE=4M – Determina el tiempo máximo que duply guardara un respaldo antes de ser eliminado.
  • MAX_FULL_BACKUPS=3 – Numero máximo de respaldos completos que seran retenidos.
  • MAX_FULLBKP_AGE=1M – Tiempo máximo para generar un nuevo respaldo completo.

 Encriptación GPG (Opcional)

Creamos un nuevo par de claves:

gpg --gen-key

Introducimos el ID y Password en el archivo de configuración:

#GPG_KEY='disabled'
GPG_PW='Qx+9cOrBSCMPTZVBXYxNyxe3zM0='
GPG_KEY='E5307BD4'

Hacer un respaldo

Para crear un respaldo utilizamos el siguiente comando:

duply MyProfile backup

Duply soporta una gran variedad de comandos y opciones para realizar respaldos, puedes consultarlos en la pagina oficial, ademas puedes tener como referencia la documentación de Duplicity.

Por ejemplo, si estamos en un ambiente Cloud usando una VPS en AWS, Google Cloud, Microsoft Azure, DigitalOcean, etc. donde podemos terminar y crear servidores o instancias a nuestro gusto y necesidad, es recomendable usar el comando --allow-source-mismatch para crear los respaldos, ya que la herramienta reconoce cuando intentamos respaldar o recuperar un respaldo en un equipo o servidor distinto.

duply MyProfile backup_verify_purge --force --allow-source-mismatch

Cronjob – Respaldos automáticos

Podemos realizar de manera automática los respaldos utilizando el Cronjob de Linux (Ubuntu).

0 3 * * * env HOME=/home/user duply MyProfile backup_verify_purge --force

Con este ejemplo de configuración se realiza un respaldo diario a las 3:00am.

Recuperar un respaldo

Para recuperar un respaldo utilizamos el siguiente comando:

duply MyProfile restore /restored_files

Si necesitamos recuperar un respaldo de una fecha específica (YYYY/MM/DD):

duply MyProfile restore -t 2017/4/11 /restored_files

Configuración avanzada

Como lo mencioné anteriormente podemos configurar de manera mas detallada las carpetas y archivos que queremos respaldar ampliando la configuración mediante el archivo “exclude”.

A partir del directorio definido en el SOURCE del archivo de configuración principal podemos excluir o agregar carpetas y archivos para ser respaldadas de la siguiente manera:

nano /home/dryweb/.duply/qrbkup/exclude

En este archivo indicamos las carpetas o archivos que deseamos agregar o excluir.

- /var/www/htdocs/wp-admin/
- /var/www/htdocs/wp-includes/
+ /var/www/htdocs/
- **

Importante tener en cuenta la precedencia al momento de definir las reglas. Por ejemplo: Si incluimos el directorio “htdocs” al inicio, no será posible después excluir los sub-directorios “wp-admin” y “wp-includes”, ya que en ese caso la primera regla nos estaría indicando que todo el directorio “htdocs” está incluido y las siguientes lo contradirían.

Pre y Post Scripts

Duply nos permite crear scripts para ejecutar antes y después de realizar el respaldo.

De igual manera estos son archivos localizados en el directorio de configuración del perfil que hemos creado y podemos utilizar comandos e instrucciones de Linux para crear acciones a nuestra conveniencia; por ejemplo, podemos crear un respaldo de la base de datos (PRE) antes de realizar el respaldo con Duply y al finalizar (POST) borrar este archivo.


4 respuestas a “Respaldos incrementales con Duply & Duplicity”

  1. Hola Cristhian. Muy buen artículo. Sólo un comentario que sería que en el archivo exclude las reglas deberían ser:

    – /var/www/htdocs/wp-admin/
    – /var/www/htdocs/wp-includes/
    + /var/www/htdocs/
    – **

    porque si ponés + /var/www/htdocs/ antes ya te toma todo ese directorio para hacer el backup y los dos siguientes directorios *no* son excluidos.

Responder a Cristhian Martínez Ochoa Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *