Cómo implementar backups incrementales

Disponer de un sistema de copias de seguridad fiable no es una opción, sino una necesidad. Los fallos de hardware, errores humanos, ataques de ransomware o simples borrados accidentales pueden provocar la pérdida de información crítica en cualquier momento. Un buen sistema de backups permite recuperar los datos de forma rápida y segura, minimizando el impacto de estos incidentes.

Dentro de las distintas estrategias de respaldo, los backups incrementales destacan por su eficiencia. A diferencia de los backups completos, que copian todos los datos en cada ejecución, los incrementales solo almacenan los cambios producidos desde el último respaldo. Esto reduce significativamente el uso de espacio en disco y el tiempo necesario para realizar las copias, manteniendo al mismo tiempo la posibilidad de restaurar la información.

En este artículo veremos cómo implementar una solución de backups completa, incremental y cifrada, utilizando únicamente herramientas que nos proporciona Ubuntu.

Prerrequisitos

Para implementar la solución de backup necesitaremos

  • Ubuntu Server o Desktop 24.04 LTS

El software que usaremos lo encontraremos en Ubuntu :

  • tar
  • gzip
  • gpg
  • find
  • cron

Una vez instalada la máquina crearemos las siguientes carpetas :

sudo mkdir /datos
sudo mkdir /backups
  • /datos contiene nuestros datos, datos de las aplicaciones, etc.
  • /backups es doonde se van a guardar las copias de seguridad.

Haciendo un backup

Backup incremental

Para poder usar tar como herramienta de backups incrementales necesitaremos usar un archivo de estado. Este archivo permite a tar conocer de qué archivos se ha hecho backup y a partir de aquí poder identificar los archivos que han cambiado.

En este escenario vamos a usar el siguiente fichero como archivo de estado :

/backups/snapshot.snar

Hemos de tener en cuenta que la primera vez que hagamos un backup incremental se considerará full backup. Para crearlo ejecutaremos :

tar -cvpzf /backups/inc_$(date +%F)-$(date +%H-%M-%S).tar.gz \
  --listed-incremental=/backups/snapshot.snar \
  /datos

Si accedemos a la carpeta de backups veremos el archivo de backup más el archivo de control.

Gracias a este método podremos optimizar el espacio en disco ya que en cada ejecución nada más se van a guardar los datos que han ido cambiando desde el backup anterior.

Cifrado de las copias

Para no dejar los archivos desprotegidos vamos a usar gpg para cifrar los archivos que se generan. Vamos a usar AES256 para cifrar el archivo :

gpg --symmetric --cipher-algo AES256 /backups/inc_2026-02-01-100001.tar.gz

Se nos pedirá que introduzcamos una contraseña y a continuación generará el archivo ya cifrado :

/backups/inc_2026-02-01-10-00-01.tar.gz.gpg

Es recomendable eliminar el archivo sin cifrar ya que si no, no tendría sentido usar un mecanismo de cifrado.

Rotación de las copias

Para evitar que el espacio en disco de nuestra máquina crezca sin control es recomendable hacer una rotación de las copias. El comando para hacer eliminar archivos con una antigüedad superior a 7 días es :

find /backups -name "*.gpg" -mtime +7 -delete

Automatizando las copias

La potencia de esta implementación es poderlo automatizar. Antes de nada deberemos generar un script que unifique todos los pasos de manera procedimental y de esta manera lo vamos a poder ejecutar de una sola vez. Crearemos un archivo bash, por ejemplo /usr/local/bin/backup.sh y añadiremos todos los pasos que hemos ido ejecutando dándole forma de script.

Aquí falta un trozo de artículo que publicaré un poco más adelante cuando mis alumnos hayan resuelto cómo desarrollar el script de automatización de la copia.

Si no quieres perderte cuando lo actualice, suscríbete a la Newsletter y recibirás las actualizaciones de artículos y novedades.

Una vez creado le configuraremos los permisos adecuados y los instalaremos en el cron de la máquina ejecutando :

crontab -e

Añadiremos que se ejecute cada día a las dos de la mañana (02:00 AM)

Recuperación del backup

Descifrado

El primer paso para recuperar el backup es descifrar el paquete de datos que se ha cifrado al hacer el backup. Lo conseguiremos ejecutando :

gpg -d backup_2026-02-01-10-00-01.tar.gz.gpg > backup_2026-02-01-10-00-01.tar.gz

Una vez tengamos el fichero comprimido simplemente tendremos que ejecutar

 tar -xvpzf backup_2026-02-01-10-00-01.tar,gz

Los parámetros que se le pasan a tar aparentemente son los mismos pero hay que notar que si para hacer el backup se usaba c ahora se está usando x.

Además hemos de tener en cuenta una cosa muy importante a la hora de recuperar el backup. Tenemos dos escenarios que se plantean aquí :

Quiero recuperar un archivo concreto de un día concreto

Debo identificar en qué archivo incremental se encuentra este archivo y descomprimir únicamente este paquete.

Quiero recuperar todo el sistema

Deberemos empezar por el archivo del full backup y a continuación ir recuperando cada uno de los archivos que se han ido generando posteriormente hasta llegar al punto que nos interesa.

Consideraciones adicionales

Hemos hablado de que cuando se hace la primera copia incremental ésta se cosidera full backup. Y después hemos hablado que es recomendable rotar las copias.

Es conveniente que cuando hagas rotación de copias, reincies el ciclo de backup haciendo un nuevo full backup. Y para conseguirno no necesitas más que eliminar el archivo de control del backup incremental, que nosotros hemos definido como /backups/snapshot.snar.

Si no lo haces así puede pasar que elimines archivos de backup antiguos y cuando quieras recuperar un fichero que hace mucho que no se modifica, éste ya no lo tengas. Por eso es recomendable que en la rotación, vuelvas a iniciar el proceso con un full backup.