Lo primero, lógicamente, es tener un servidor con ssh/sftp activado, e instalar el cliente de RESTIC en el equipo que queremos hacer las copias de seguridad
Para instalarlo seguimos las opciones que nos indican según nuestro sistema, pero debería ser algo bastante sencillo siguiendo estas instrucciones.
Una vez creado, lo primero sera crear el repositorio donde se guardaran estos backups, hay que tener en cuenta que no sera visible el contenido de los archivos ya que van cifrados y por lo tanto, perder la clave seria perder todos los datos en el backup
restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup init
Eso nos pedirá, primero un password para el repositorio que deberemos insertar dos veces por seguridad y luego la contraseña de ese usuario en el servidor sftp
Por comodidad y seguridad ante olvidos, guardare ese password en un fichero que llamare bckpass.md (puede tener cualquier nombre, pero asegúrate de cambiarlo luego en las instrucciones que correspondan) y así poder pasárselo como parámetro a los comandos y no tener que introducirlo cada vez que hago cualquier operación. Eso si, no lo recomiendo en equipos que vayas a sacar de tu casa por que si lo pierdes quizás tengan acceso a tus archivos.
También por comodidad de que no me pregunte el pass del ssh cada vez que intenta una operacion, sigo este tutorial de generar claves (lo pongo por aqui por tenerlo a mano también que esta en Internet archive)
A quick how-to, mostly for my reference, but also because a Google search for “using ssh with certificates” brings up no useful resources.
To avoid having to type in your password every time you want to ssh to a server, you can set up the server to accept a [certificate](https://web.archive.org/web/20160404025901/http://en.wikipedia.org/wiki/Public-key_cryptography "Public-key cryptography on wikipedia.org") like this:
On your local machine, go to the command-line and type:
1. cd ~/.ssh
2. ssh-keygen -t rsa
3. Choose no passphrase when asked and accept the default filename of id_rsa
4. scp id_rsa.pub <user>@<yourhost>:.ssh/authorized_keys
5. Provide your password when asked and that’s the last time you’ll have to do it!
If you get an error on the last step saying “scp: .ssh/authorized_keys: No such file or directory”, connect to your host and create the .ssh directory in your home directory.
Ahora ya, pasemos al cacharreo con los backups.
Para hacer el backup de una carpeta ejecutamos el siguiente comando (en mi caso la carpeta /home/
).
restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md backup /home/
Luego si queremos mantener solo una cantidad limitada de backups (hay que tener en cuenta que es incremental, por lo que si entre dos copias no hay modificaciones, apenas supone espacio), podemos personalizar el siguiente comando con los parámetros que ponen aqui
restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md forget --prune --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 5
Por ultimo, conviene hacer un checkeo de los datos (¡¡para que quieres un backup si luego esta corrupto!!). Este se puede hacer de dos maneras: uno rápido
restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md check
y otro exhaustivo
restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md check --read-data
En mi caso hago siempre uno rápido después de cada copia de seguridad y uno exhaustivo cada mes
Al final, he creado un script para juntar todo en un solo listado
clear echo "-Desbloqueando repositorios por si acaso" echo "------------------------------------------------- repo_test " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/repo_test --verbose --password-file ./bckpass.md unlock echo "------------------------------------------------- Nube " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Nube --verbose --password-file ./bckpass.md unlock echo "------------------------------------------------- LinuxAPP " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/LinuxAPP --verbose --password-file ./bckpass.md unlock echo "------------------------------------------------- backup2 " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md unlock echo "-Comenzando backup" echo "------------------------------------------------- repo_test " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/repo_test --verbose --password-file ./bckpass.md backup /home/ echo "------------------------------------------------- Nube " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Nube --verbose --password-file ./bckpass.md backup /mnt/datos/Nube/ echo "------------------------------------------------- LinuxAPP " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/LinuxAPP --verbose --password-file ./bckpass.md backup /mnt/datos/LinuxAPPs/ echo "------------------------------------------------- backup2 " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md backup /mnt/datos/Nube/ restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md backup /home/ restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md backup /mnt/datos/LinuxAPPs/ echo "-Limpiando backups viejos" echo "------------------------------------------------- Nube " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Nube --verbose --password-file ./bckpass.md forget --prune --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 5 echo "------------------------------------------------- repo_test " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/repo_test --verbose --password-file ./bckpass.md forget --prune --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 5 echo "------------------------------------------------- LinuxAPP " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/LinuxAPP --verbose --password-file ./bckpass.md forget --prune --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 5 echo "------------------------------------------------- backup2 " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md forget --prune --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 5 echo "-Comprobando backups" echo "------------------------------------------------- repo_test " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/repo_test --verbose --password-file ./bckpass.md check echo "------------------------------------------------- Nube " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Nube --verbose --password-file ./bckpass.md check echo "------------------------------------------------- LinuxAPP " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/LinuxAPP --verbose --password-file ./bckpass.md check echo "------------------------------------------------- Backup " restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md check echo "-Listando cambios" restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/repo_test --verbose --password-file ./bckpass.md snapshots restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Nube --verbose --password-file ./bckpass.md snapshots restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/LinuxAPP --verbose --password-file ./bckpass.md snapshots restic -r sftp:root@192.168.1.190:/mnt/THD/Backups/Restic/Backup --verbose --password-file ./bckpass.md snapshots
Como veis, aparte de hacer varios backups y añadir distintas carpetas a uno solo, he usado un par de comandos que no hemos visto antes - unlock -> Si por lo que sea alguna operación se queda a medio, el repositorio se queda bloqueado, con este comando se desbloquea - snapshots -> lista todos las copias que se han hecho en el repositorio
En cualquier caso, la documentacion de RESTIC esta muy bien estructurada y si necesitáis algo mas, seguro que ahí lo encontrareis