Aprendiendo a hacer backups mediante Restic

Restic es un desarrollo en Rust para la gestión de copias de seguridad. Es un programa que crea copias de seguridad cifradas e incrementales. No es un sistema cliente/servidor y permite usar un montón de servicios de almacenamiento pudiendo usar rclone como administrador de las conexiones. En este ejemplo voy a usar SFTP. En el caso de que queramos usar webDav deberemos gestionar la conexión con rclone. En mi caso todas las pruebas las he realizado sobre un NAS de Synology.

Restic sobre SFTP

Pasos previos

Además de instalar restic debemos asegurarnos de que nuestro usuario puede acceder por SSH al servidor donde vamos a almacenar los bakups. Para ello debemos copiar nuestra llave pública ssh al servidor:

scp -p<puerto> ~/.ssh/id_rsa.pub my-nas-user@my.nas.ip:/var/services/homes/my-nas-user

Y entramos al servidor:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Creamos el repositorio

En restic llaman "repositorio" al lugar donde vamos a guardar un backup. Una vez subamos contenido creará una snapshot.

Para crear un repositorio ejecitamos:

restic -r sftp:my-nas-user@my-nas-ip:/path/destino init

Nos pedirá una contraseña que necesitaremos para administrar este repositorio (incluyendo el poder recuperar los datos, así que mejor no perderla)

Añadir contenido al repositorio

El siguiente paso es hacer el primer backup

restic -r sftp:my-nas-user@my-nas-ip:/path/destino backup /home/usuario/Documentos

Nos pedirá de nuevo la contraseña y veremos información sobre el progreso. Si queremos más información podemos añadir --verbose al comando anterior.

Y ya podemos ver las snapshots que ha creado con el comando

restic -r sftp:my-nas-user@my-nas-ip:/path/destino snapshots

Recuperar un backup

Se hace con el comando

restic -r sftp:my-nas-user@my-nas-ip:/path/destino restore id-bakup --target /tmp/prueba

Un dato curioso es que al restaurar el backup recrea el path completo que se almacenó en el repositorio, por lo que en nuestros ejemplos anteriores nos va a crear el path /tmp/prueba/home/usuario/Documentos.

Hacer limpieza

Como el espacio para las copias de seguridad es limitado restic nos permite indicar el número de copias que queremos guardar. Así con este comando le vamos a decir que nos guarde sólo 3 snapshots y que nos borre todas las demás:

restic -r sftp:my-nas-user@my-nas-ip:/path/destino restore id-bakup forget --keep-last 3 --prune 

Más utilidades

Como se puede ver restic no se va a ejecutar de forma periódica. Por eso hay diferentes complementos, como restic-profile o restic-browser para poder gestionar de una forma más sencilla los backups.