
677 - No pierdas tus datos. Backups infalibles
Buscas un sistema seguro y fiable para tus copias de seguridad? Monta tu sistema utilizando #restic, #resticprofile y #minio para tus #backups infalibles
Hace años que te vengo hablando sobre copias de seguridad. En concreto en el episodio 173 te comenté como había hecho un rm -rf
, y fuí salvado por Borg. Se que no es un tema tan atractivo como hablar de multimedia, o de servicios que impactan, pero es algo imprescindible. El problema es que solo te acuerdas de las copas de seguridad cuando realmente las necesitas, y en ese momento, es posible que te acuerdes para mal, porque o bien en un momento determinado decidiste no hacerlas o decidiste dejarlo para mas adelante (maldita procrastinación), o simplemente no comprobaste que realmente se estuvieran haciendo de forma correcta. Así, tener un sistema de copias de seguridad eficaz y eficiente es realmente imprescindible y fundamental. En este episodio te hablaré sobre Restic, una alternativa a Borg que estoy probando y que con mucha probabilidad se quedé como sistema por defecto en las próximas semanas.

No pierdas tus datos. Backups infalibles con Restic y Minio
Un paseo por el pasado
Antes de hablarte de Restic, no quiero dejar de mencionar a BorgBackup, que es el sistema que estoy utilizando y que tan buen resultado me ha dado hasta el momento. Y ¿entonces?¿por que cambio?. Realmente no estoy cambiando. A raíz del próximo episodio, he retomado restic
, y quiero ver las opciones y posibilidades que me ofrece y compararlo con mi sistema por defecto. No es que lo vaya a abandonar de buenas a primeras, quiero estudiarlo y en función de las conclusiones, tomar una decisión.
Restic
Restic es una herramienta de copias de seguridad rápida, segura y eficiente. Permite guardar múltiples revisiones de archivos y directorios en un repositorio cifrado almacenado en diferentes backends.
Y es precisamente esto de los backends
, lo que mas me ha atraído, porque hasta la fecha, solo he tirado de ssh
y rsync
, para sincronizar las copias de seguridad en distintos sitios
. Y, además al ver, la posibilidad de utilizar S3
, no he podido resistirme.
La Instalación de restic
es tremendamente sencilla. Simplemente ejecuta en una terminal lo siguiente,
sudo pacman -S restic
Y para crear tu primer repositorio tienes que ejecutar algo como,
restic - r /ruta/del/repositorio init
Perfiles para restic
Opcionalmente puede utilizar una herramienta auxiliar para facilitarte la vida en cuanto a la gestión de los distintos repositorios que utilices. Restic Profile, es un gestor de configuraciones organizados por perfiles para restic
. Simplemente es un facilitador.
Así la configuración la tienes establecida en distintos perfiles como por ejemplo, lo que te muestro a continuación,
version: "1"
default:
repository: "local:/data/resticbackup"
backup:
verbose: true
tag:
- default
source:
- "/data/ansible"
- "/data/php"
exclude:
- "*.aup"
- "*.au"
- "*.mkv"
- "*.mp3"
- "/data/**/__pycache__/"
s3:
inherit: default
repository: "s3:https://s3.tuservidor.es/restic-archi"
s3one:
inherit: default
repository: "s3:https://otros3.tuservidor.es/restic-one"
A partir de aquí, hacer una copia de seguridad es tan sencillo como ejecutar los siguientes comandos,
resticprofile default.backup
resticprofile s3.backup
resticprofile s3one.backup
Y de la misma forma puedes hacer para comprobar los datos utilizar check
o para seguir una política de retención de datos utilizar forget
.
De todas formas, si no quieres utilizar resticprofile
, siempre puedes hacerte un sencillo script y listo. En mi caso particular, me ha gustado la idea de resticprofile
, y lo he utilizado.
Para instalar resticprofile
, indicarte que lo tienes que hacer desde los repositorios AUR, ejecutando,
paru -S resticprofile
Infraestructura del Backup
Actualmente, ya con BorgBackup implementé una política de tres copias de seguridad, dos en local y una en remoto. De esta forma, tengo una en el propio equipo, un segunda en un Slimbook One, y la tercera se encuentra en un VPS.
Dado que restic
, permite configurar distintos repositorios de forma relativamente sencilla, lo que hice es probar distintas alternativas para ver cual se acoplaba mejor a mi flujo de trabajo. En este caso probé S3
, en concreto Minio, y un servicio que hay específico para Restic conocido como Rest Server, que según indica es un servidor HTTP específico para Restic. Un servicio que te proporciona una forma eficiente de realizar copias de seguridad de forma remota.
En el caso del VPS, me decanté por Minio que ya lo tenía instalado, y simplemente tenía que crear una nuevo Bucket y ponerlo en funcionamiento, y la verdad es que en menos de 5 minutos tenía mis 9 GB de datos a resguardo.
En el caso del Slimbook One, probé inicialmente Rest Server, pero en hacer la misma copia de seguridad, tardó mas de una hora. Esto me llevó a pesar que, o bien tenía un problema en mi red local, o bien, el servicio no se adaptaba a mis necesidades. Finalmente, instalé también Minio en el Slimbook One, y listo. Efectivamente, en menos de 5 minutos tenía las copia de seguridad. Así que para mi Minio es la herramienta que andaba buscando.
La configuración de las copias de seguridad en Minio, es exactamente igual que en el caso de que al tuvieras en local. Si utilizas restic
simplemente lo inicializas con,
restic -r s3:https://tuservidor.es/restic init
O en el caso de que utilices resticprofile
,
resticprofile s3.init
Programación de las copias de seguridad
Es posible utilizar resticprofile
para configurar las copias de seguridad. Sin embargo, dado que ya lo tengo configurado con BorgBackup, he optado por hacer un script que me permita hacer las copias de seguridad de forma automática. En mi caso, he optado por hacerlo con systemd
, y para ello he utilizado el servicio y el temporizador de BorgBackup, añadiendo las líneas necesarias,
export RESTIC_REPOSITORY="/data/restic"
export RESTIC_PASSWORD="XXXXXXXXXXXXXXXXXXXXXXXXX"
export AWS_ACCESS_KEY_ID="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
export AWS_SECRET_ACCESS_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
PROFILES=(default s3 s3one)
for profile in "${PROFILES[@]}"
do
echo "=== Backup ${profile} ==="
create_output=$(resticprofile ${profile}.backup)
ok=$?
publish "${profile}" "create" "${create_output}" "${ok}"
check_output=$(resticprofile ${profile}.check)
ok=$?
publish "${profile}" "check" "${check_output}" "${ok}"
cleanup_output=$(resticprofile ${profile}.forget --prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6)
ok=$?
publish "${profile}" "cleanup" "${cleanup_output}" "${ok}"
done
Como nota al margen, indicar que la función publish
me permite publicar todos los datos en OpenObserve
Conclusión
Como ves, estos días he estado la mar de entretenido configurando y poniendo en marcha este nuevo sistema de copias de seguridad. Y la verdad es que me ha gustado mucho. No se si será definitivo, pero de momento, me ha gustado mucho. Y tu, ¿has probado Restic?¿Qué te parece?¿Qué sistema de copias de seguridad utilizas?¿Te animas a probarlo?¿Te animas a contarme tu experiencia?.