## Aprendiendo a hacer backups mediante Restic Recientemente he recibido el encargo de montar un sistema de copias de seguridad y me he lanzado a usar algo ligero 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. => https://restic.readthedocs.io/en/stable/020_installation.html Instalación de Restic ## 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 ~/.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 para poder gestionar de una forma más sencilla los backups. => https://github.com/creativeprojects/resticprofile Restic-profile => https://github.com/emuell/restic-browser Restic-browser