Restic: Uso de etiquetas

4 minutos de lectura

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:carlos@192.168.2.3:/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:carlos@192.168.2.3:/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 als 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:carlos@192.168.2.3:/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:carlos@192.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… :penguin: