Restic: Uso de etiquetas
2019-12-19
Índice
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]:/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
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… 🐧