Restic: Uso de etiquetas

2019-12-19

Cuando comencé a usar restic no conocía lo suficiente sobre el parámetro tag y lo importante que se vuelve cuando utilizas políticas de retención de tus copias de seguridad.

Empecó a trabajar con varios dispositivos sobre un mismo repositorio, y para rotar las instantáneas lo hacia en función a la etiqueta Host que se aplica a cada dispositivo, en función a su hostbane, así por ejemplo, a mi portátil se le aplica la etiquete Hosts asus

restic -r sftp:[email protected]:/mnt/backup/restic-repo snapshots
       enter password for repository:
   repository 7de6b43c opened successfully, password is correct
   ID        Time                 Host        Tags           Paths
   -------------------------------------------------------------------------------------
   9863a3d6  2019-11-11 00:31:53  asus                       /etc/fstab
							     /home/carlos
   -------------------------------------------------------------------------------------

Cada hora ejecuto restic mediante systemd para hacer una instantánea del estado de ciertas carpetas del ordenador portátil

restic -r sftp:[email protected]:/mnt/backup/restic-repo backup --verbose --files-from files_to_backup.txt --exclude-file restic_exclude.txt

Y utilizaba la etiqueta Host para rotar las copias, y dejar solo las dos ultimas horas

restic forget --verbose --host asus --group-by "paths,tags,host" --keep-hourly 2

Trabajando con tags

El problema aparece si yo quiero realizar varias instantáneas del portátil, por ejemplo, una instantánea para los archivos personales y otra instantánea para los del trabajo, de la instantánea del trabajo quiero mantener 10 copias diarias y de la personal solo las dos ultimas horas, si utilizo la etiqueta hosts para rotar las instantáneas, no diferencia que instantánea debe de borrar, ya que las dos pertenecen al mismo host.

La solución pasa por aplicar etiquetas, tags, para la instantánea con los ficheros personales

restic -r sftp:[email protected]:/mnt/backup/restic-repo backup --tag personal --verbose --files-from files_to_backup.txt --exclude-file restic_exclude.txt

Y para la del trabajo

restic -r sftp:[email protected]2.168.2.3:/mnt/backup/restic-repo backup --tag trabajo --verbose --files-from files_to_backup.txt --exclude-file restic_exclude.txt

Para mantener las dos ultimas horas de la instantánea personal

ExecStartPost=restic forget --verbose --host asus --tag personal --group-by "paths,tags,host" --keep-daily 2

Y para la del trabajo

ExecStartPost=restic forget --verbose --host asus --tag trabajo --group-by "paths,tags,host" --keep-daily 10

Manipulando tags

Una vez vista su utilidad, vamos a ver como manipular las etiquetas, puedes obtener la ayuda sobre tags

restic tag --help

En el ejemplo vemos que tenemos una instantánea con ID 9f1a0de0 y con las etiquetas systemd.timer y rock64pro

restic -r rclone:gdrive_md:/Backups snapshots --password-file ~/bin/.restic
repository 43391152 opened successfully, password is correct
ID        Time                 Host        Tags                     Paths
------------------------------------------------------------------------------------------------
9f1a0de0  2019-11-12 11:35:18  rock64pro   systemd.timer,rock64pro  /mnt/datos/Docker
/mnt/datos/Media
/home/carlos/.config/rclone
/home/carlos/.config/systemd
/home/carlos
/mnt/Datos
------------------------------------------------------------------------------------------------
1 snapshots

Eliminar

Vamos a eliminar la etiqueta rock64pro, para ello utilizamos el comando tag --remove etiqueta ID

restic -r rclone:gdrive_md:/Backups tag --remove rock64pro 9f1a0de0 -p ~/bin/.restic
repository 43391152 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots

El resultado

restic -r rclone:gdrive_md:/Backups snapshots --password-file ~/bin/.restic
repository 43391152 opened successfully, password is correct
ID        Time                 Host        Tags           Paths
--------------------------------------------------------------------------------------
6e7312ba  2019-11-12 11:35:18  rockpro64   systemd.timer  /mnt/datos/Docker
/mnt/datos/Media
/home/carlos/.config/rclone
/home/carlos/.config/systemd
/home/carlos
/mnt/Datos
--------------------------------------------------------------------------------------
1 snapshots

Es importante resaltar que con cada cambia de etiqueta en la instantánea, tambión cambia su ID.

Añadir

Para añadir una nueva etiqueta utilizamos el comando tag --add etiqueta ID

restic -r rclone:gdrive_md:/Backups tag --add prueba1 6e7312ba --password-file ~/bin/.restic
repository 43391152 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
restic -r rclone:gdrive_md:/Backups snapshots --password-file ~/bin/.restic
repository 43391152 opened successfully, password is correct
ID        Time                 Host        Tags                   Paths
----------------------------------------------------------------------------------------------
7afaffef  2019-11-12 11:35:18  rockpro64   systemd.timer,prueba1  /mnt/datos/Docker
/mnt/datos/Media
/home/carlos/.config/rclone
/home/carlos/.config/systemd
/home/carlos
/mnt/Datos
----------------------------------------------------------------------------------------------
1 snapshots

Sustituir

Podemos sustituir el valor de una o varias etiquetas con tag --set etiqueta ID

restic -r rclone:gdrive_md:/Backups tag --set prueba2 --set prueba3 8ffba754 --password-file ~/bin/.restic
repository 43391152 opened successfully, password is correct
create exclusive lock for repository
modified tags on 1 snapshots
restic -r rclone:gdrive_md:/Backups snapshots --password-file ~/bin/.restic
repository 43391152 opened successfully, password is correct
ID        Time                 Host        Tags             Paths
----------------------------------------------------------------------------------------
ba00b2a4  2019-11-12 11:35:18  rockpro64   prueba2,prueba3  /mnt/datos/Docker
/mnt/datos/Media
/home/carlos/.config/rclone
/home/carlos/.config/systemd
/home/carlos
/mnt/Datos
----------------------------------------------------------------------------------------
1 snapshots

Resumen

En resumen, agregar etiquetas nos permite agrupar varias copias de seguridad, facilitando el trabajo para rotar, borrar o buscar instantáneas.

Espero que te haya gustado, pasa un buen día… 🐧

Ingrese la dirección de su instancia


Más publicaciones como esta

Backup ficheros de configuración con dotdrop

2019-01-24 | #backup

Escuchando el podcast de Lorenzo (El Atareao) descubrí de la existencia de ciertas herramientas para el backup de los ficheros de configuración, como pueden ser dotdrop, dotfiles o fresh Hasta ahora, tenia un pequeño script de bash donde iba poniendo aquellos ficheros de los que quería tener una copia de seguridad, realmente lo que hacia era que cada cierto tiempo realizaaba una copia de esos ficheros a una carpeta y luego esa carpeta la subía a gitlab, y de esta forma tenia mis ficheros de configuración siempre disponibles desde cualquier ordenador.

Continuar leyendo 


Restic: Backups bien hechos

2019-11-28 | #backup #restic

Despuós de trabajar con rnsaphot y Duplicati, encontró restic, teniendo como principal ventaja respecto a los anteriores el uso de la deduplicacion de ficheros, por lo tanto no distingue entre backups incrementales o totales, usa la función inteligente de deduplicación para los datos, por lo que todos los backups son siempre incrementales, solo los archivos nuevos o con cambios serán subidos al repositorio. Tambión y no menos importante es que el repositorio se cifra, por lo que nuestros datos se mantienen a salvo de miradas indiscretas.

Continuar leyendo 