Blog Tinux Net
Publicado en
Linux Cmds

Restic: Configuraciones y scripts

Autor

Restic

  • Crear calendario de snapshots a guardar, diario [7], semanal [3] , mensual [1] y anual [1].
  • Crear estructura para excluir archivos y/o directorios.
  • Crear estructura para incluir archivos y/o directorios.
  • Crear metodo, para que sftp se pueda autentificar con llave ( keys rsa o ed25529).
  • Crear menus para aceptar crear el backup de restic.
  • Generar archivo para tratamiento posterior con restic.

Nota: muy importante es el orden de las ordenes, y opciones

Politica de Retencion o Calendarios de Snapshots

# backup.sh
DIA_SEMANA=$(date +%u)    # 1=lunes, 7=domingo
DIA_MES=$(date +%d)
MES=$(date +%m)

TAGS="diario"

# Semanal: cada domingo
if [[ $DIA_SEMANA -eq 7 ]]; then
  TAGS="$TAGS,semanal"
fi

# Mensual: primer día del mes
if [[ $DIA_MES -eq 1 ]]; then
  TAGS="$TAGS,mensual"
fi

# Semestral: 1 de enero y 1 de julio
if [[ $MES == "01" && $DIA_MES == "01" ]]; then
  TAGS="$TAGS,semestral,anual"
elif [[ $MES == "07" && $DIA_MES == "01" ]]; then
  TAGS="$TAGS,semestral"
fi

restic -r "$REPO" backup --tag "$TAGS" /ruta/a/respaldo

# Ahora forget con agrupación por tags
restic -r "$REPO" forget \
  --group-by tags \
  --keep-tag diario      --keep-last 5 \
  --keep-tag semanal     --keep-last 3 \
  --keep-tag mensual     --keep-last 1 \
  --keep-tag semestral   --keep-last 4 \
  --keep-tag anual       --keep-last 1 \
  --prune

Filtros para Inclusion de Archivos

Incluir archivos segun que patron , no es sencillo en restic. Al final, he llegado a la conclusion de utilizar la herramienta externa find para que me cree los la ruta absoluta para copiar.

Ejemplo que funciona:

Hay que crear un archivo como .include_images utilizando este codigo con find

find . -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.gif" -o -iname "*.tiff" -o -iname "*.bmp" \) -print > .include_images

y asi en el Shell:

restic backup  -r /mnt/restic-backup/testing.took.tinux.net  --files-from .include_images