Backup de mi equipo de sobremesa con restic: copias incrementales y un icono en el escritorio

Ventana de diálogo de backup en KDE Plasma mostrando el progreso de restic hacia el Storage Box de Hetzner

En el artículo anterior arreglamos el backup del VPS y añadimos el del nodo Proxmox. Quedaba la parte más complicada: las máquinas físicas.

Complicada no por razones técnicas, sino prácticas. Un servidor está siempre encendido y el cron hace su trabajo sin que nadie lo mire. Un desktop no. Mi equipo de sobremesa, Solarium, se apaga cuando acabo de trabajar, no está en ninguna red de siempre disponible, y si el backup requiere abrir una terminal y recordar tres comandos... no se hará nunca.

La solución tenía que ser un icono en el escritorio. Doble clic, confirmar, esperar, listo.


Por qué restic

El backup del VPS y del nodo Proxmox usa tar+gz y rsync — funciona bien para configuraciones que pesan pocos megabytes y cambian poco. Para un desktop con gigabytes de datos que cambian a diario, necesitaba algo diferente.

Restic es una herramienta de backup incremental, deduplicada y cifrada. Lo que eso significa en la práctica:

  • La primera vez sube todo.
  • Las veces siguientes solo sube los bloques que han cambiado desde el último backup.
  • Si tienes el mismo fichero en dos carpetas distintas, solo se almacena una vez.
  • Todo el repositorio está cifrado con AES-256 antes de salir de tu máquina. El Storage Box nunca ve los datos en claro.

El modelo mental es parecido a PBS: snapshots con retención configurable, pero para máquinas físicas y hacia cualquier destino SFTP.


Decidir qué respaldar

Antes de configurar nada, hay que saber qué entra en el backup. En Solarium tengo:

Música       1,1 TB   → fuera, proyecto aparte
Imágenes      95 GB   → fuera, tengo RAID
Descargas    180 GB   → fuera, prescindible
Vídeos        18 GB   → fuera, mezclado con descargas
Dropbox      4,7 GB   → fuera, cloud es la fuente de verdad

Con todo eso fuera, el scope real se reduce a algo muy manejable:

~/.config/darktable      2,7 GB   → base de datos de edición de fotos
~/.config/Code - OSS     452 MB   → configuración VS Code
~/.config/REAPER         102 MB   → DAW, proyectos y configs
~/.local/share/digikam   947 MB   → catálogo de fotos
~/.local/share/fonts     177 MB   → fuentes instaladas
~/.local/share/plasma    7,7 MB   → configuración KDE
~/Fonts                  623 MB   → colección de fuentes
~/backups                 63 MB   → backups varios
~/.bashrc                          → configuración del shell

Total: unos 8 GB. Y con los incrementales de restic, los backups del día a día serán mínimos.

Ficheros de configuración editables

En lugar de hardcodear las rutas en el script, uso dos ficheros en ~/.config/restic-solarium/:

include.txt — rutas a respaldar:

/home/jaume/.config/darktable
/home/jaume/.config/REAPER
/home/jaume/.config/Code - OSS
/home/jaume/.local/share/digikam
/home/jaume/.local/share/fonts
/home/jaume/.local/share/plasma
/home/jaume/Fonts
/home/jaume/backups
/home/jaume/.bashrc

exclude.txt — patrones a ignorar:

*.tmp
*.cache
*.log
*/.git
*/node_modules
*/cache
*/Cache

Cuando quiero añadir una ruta nueva — abro include.txt, añado la línea, guardo. El siguiente backup ya la incluye. Sin tocar el script.


Configurar restic con el Storage Box

Instalar restic

En Arch/EndeavourOS:

sudo pacman -S restic

Configurar el acceso SSH

Generamos una clave SSH dedicada para los backups:

ssh-keygen -t ed25519 -f ~/.ssh/id_storagebox -N ""

La añadimos al Storage Box. Hetzner no soporta ssh-copy-id estándar, hay que usar -s:

ssh-copy-id -p 23 -s -i ~/.ssh/id_storagebox.pub uXXXXXX@uXXXXXX.your-storagebox.de

Y creamos un alias en ~/.ssh/config para no repetir parámetros:

Host storagebox
    HostName uXXXXXX.your-storagebox.de
    User uXXXXXX
    Port 23
    IdentityFile ~/.ssh/id_storagebox

Verificar que conecta sin contraseña:

ssh storagebox "ls"

Inicializar el repositorio

restic -r sftp:storagebox:backups/restic-solarium init

Restic pedirá una contraseña para cifrar el repositorio. Esta contraseña es lo único que no se puede recuperar si se pierde — va directa a Bitwarden.

Guardamos la contraseña en un fichero para que el script no la pida interactivamente:

echo 'la_contraseña' > ~/.config/restic-solarium/repo.pass
chmod 600 ~/.config/restic-solarium/repo.pass

Y verificamos que el repositorio abre correctamente:

restic -r sftp:storagebox:backups/restic-solarium \
    --password-file ~/.config/restic-solarium/repo.pass \
    snapshots

El script con interfaz gráfica

El backup manual desde terminal funciona, pero no es lo que quiero para el día a día. El script combina kdialog (diálogos nativos de KDE) con zenity (ventana de progreso con texto en tiempo real).

El flujo completo es:

  1. Popup de confirmación — muestra la fecha del último backup
  2. ¿Apagar al terminar? — sí o no
  3. Aviso de guardar — si eligió apagar, recordatorio de cerrar trabajos abiertos
  4. Ventana zenity — progreso con la salida real de restic línea a línea
  5. Aplicar retenciónrestic forget --prune automático
  6. Resultado — popup con ID y fecha del snapshot, o error si algo falló
  7. Apagado — countdown de 30 segundos si se eligió apagar, con popup pasivo

La retención que uso: 7 diarios + 4 semanales + 3 mensuales.

Un detalle: el día que el backup es semanal, no hace diario — son excluyentes. Lo mismo que en el VPS.

Instalar las dependencias

sudo pacman -S kdialog zenity

El icono en el escritorio

Creamos un fichero .desktop en ~/Escritorio/:

[Desktop Entry]
Name=Backup Solarium
Comment=Hacer backup de Solarium al Storage Box
Exec=/home/jaume/bin/solarium-backup.sh
Icon=backup
Terminal=false
Type=Application
Categories=Utility;
chmod +x ~/Escritorio/backup-solarium.desktop

En KDE puede que pida confirmar que es de confianza la primera vez — clic derecho y "Permitir ejecutar".


Lo que queda pendiente

El script tiene una sección donde pretende mostrar las ventanas abiertas antes del apagado para que puedas guardar los trabajos. El problema es que estoy en Wayland, y wmctrl — la herramienta estándar para esto — solo funciona en X11. No hay alternativa madura para KDE/Wayland todavía.

De momento el aviso es genérico: "guarda todos tus trabajos antes de continuar". Cuando aparezca una solución decente para Wayland, lo actualizamos.

También quedan pendientes los backups de música, imágenes y vídeo — más de un terabyte solo de CDs digitalizados. Eso requiere otra conversación, probablemente un NAS, y desde luego otro artículo.


Estado final del sistema de backup

Qué Herramienta Destino Cuándo
CTs y VMs del homelab PBS Storage Box Automático, madrugada
VPS (webs + BBDD + configs) Script bash + rsync Storage Box Automático, 3:00
Nodo Proxmox (configuración) Script bash + rsync Storage Box Automático, 5:00
Solarium (configs + datos) restic Storage Box Manual, icono escritorio
Música / Imágenes / Vídeo Pendiente
VANT y otros equipos Pendiente

Los scripts están disponibles en el repositorio jferrep/jaws-audit en GitHub.

Jaume Ferré

Jaume Ferré

Tengo un trabajo que no tiene nada que ver con esto. Pero me gusta cacharrear con webs, Linux y el homelab. De vez en cuando alguien me paga por ello, lo cual siempre sorprende. Canon R7 en mano y Arch Linux de fondo.

¿Te ha sido útil?

Ayúdame a mejorar con tu puntuación.

0.0 (0 votos)
Comentarios