Saltar a contenido

Política de Copias de Seguridad y Retención de Proxmox

River Oaks Church - Creado en abril de 2026

Resumen

Estrategia de copias de seguridad de tres niveles: local de acceso rápido, NAS a medio plazo y nube externa. Los servicios críticos (servidor web, Bitwarden) reciben copias de seguridad locales más frecuentes.

Nivel 1 — Local (Host Proxmox)

Copias de Seguridad Nocturnas

  • Almacenamiento: local (/var/lib/vz)
  • Programación: Lunes a viernes a las 21:00
  • Retención: Conservar las últimas 3 copias de seguridad
  • Selección: Todas las VMs/CTs excepto 109 (storage-mgr), 110 (Bitwarden), 100 (servidor web)
  • Propósito: Restauraciones rápidas para problemas recientes

Servicios Críticos (Alta Frecuencia)

  • Almacenamiento: local (/var/lib/vz)
  • Programación: Cada 6 horas (*/6:00)
  • Retención: Conservar las últimas 5 copias de seguridad
  • Selección: 100 (servidor web), 110 (Bitwarden)
  • Propósito: Minimizar la pérdida de datos para servicios críticos

Nivel 2 — NAS (SMB/CIFS)

  • Almacenamiento: gofer2 (/mnt/pve/gofer2)
  • Programación: Diariamente a las 22:30
  • Retención: Conservar las últimas 5 copias de seguridad
  • Selección: Todas las VMs/CTs
  • Propósito: Copia de seguridad local a medio plazo con más historial

Nivel 3 — Externa (Google Team Drive)

  • Almacenamiento: td-backups:ProxmoxBackups vía rclone
  • Programación: Diariamente a medianoche vía cron en storage-mgr (LXC 109)
  • Retención: Instantáneas semanales, conservadas durante 13 semanas (aprox. 3 meses)
  • Mecanismo: Script /root/proxmox-backup-sync.sh en LXC 109
  • Copia desde /mnt/proxmox-backups (montaje de enlace del /var/lib/vz del host)
  • Organiza por carpeta de semana ISO (ej. 2026-W16/)
  • Ejecuta una copia idempotente cada noche, incluso cuando la semana actual ya contiene archivos
  • Verifica los objetos existentes y carga solo los archivos faltantes o modificados, para que las semanas interrumpidas por cuota se reanuden en la siguiente ejecución
  • Se detiene rápidamente cuando Google Drive informa de su límite de carga en lugar de reintentar durante horas
  • Utiliza un bloqueo no bloqueante para evitar sincronizaciones superpuestas
  • Elimina las carpetas remotas de más de 13 semanas solo después de que la copia semanal tenga éxito
  • --min-age 60m evita cargar copias de seguridad en curso
  • Cron: 0 0 * * * /root/proxmox-backup-sync.sh >> /var/log/proxmox-backup-sync.log 2>&1

Arquitectura

Proxmox vzdump (*/6:00)     ──► local (conservar 5) ── 100 (servidor web), 110 (Bitwarden)
Proxmox vzdump (lun-vie 21) ──► local (conservar 3) ── todo lo demás (excepto 109)
Proxmox vzdump (22:30)      ──► gofer2/NAS (conservar 5) ── todas las VMs/CTs
LXC 109 cron   (00:00)      ──► rclone ──► Google Team Drive (semanal, conservar 13 semanas)

Notas

  • LXC 109 (storage-mgr) está excluido de todos los trabajos de copia de seguridad local para evitar recursión
  • El destino remoto de Team Drive está configurado como td-backups: en rclone en LXC 109
  • Las copias de seguridad locales se montan como solo lectura en LXC 109 en /mnt/proxmox-backups
  • Config: mp1: /var/lib/vz/dump,mp=/mnt/proxmox-backups,ro=1 en /etc/pve/lxc/109.conf
  • La primera carga semanal es de ~230-350 GB dependiendo de la retención local en el momento de la sincronización
  • Monitorear los registros de sincronización en /var/log/proxmox-backup-sync.log en LXC 109

Verificación y recuperación

Compruebe los trabajos de copia de seguridad programados y el estado del almacenamiento en el host Proxmox:

pvesh get /cluster/backup
pvesm status

Compruebe la programación externa y la salida reciente de la sincronización en LXC 109:

pct exec 109 -- crontab -l
pct exec 109 -- tail -n 200 /var/log/proxmox-backup-sync.log

Previsualice una sincronización sin cargar ni eliminar nada:

pct exec 109 -- /root/proxmox-backup-sync.sh --dry-run

Un código de salida de 7 con userRateLimitExceeded significa que se alcanzó el límite de carga de Google Drive. La carga permanece incompleta pero recuperable; la siguiente ejecución nocturna compara la misma carpeta de semana ISO y reanuda los objetos faltantes. No cree un marcador vacío ni omita la semana existente. Confirme la finalización comparando el inventario local de archivos elegibles con la semana remota y comprobando cualquier objeto faltante reportado específicamente.

El script implementado se mantiene en el repositorio riveroaks/infra en storage/hosts/storage-mgr/files/usr/local/sbin/riveroaks-proxmox-backup-sync. Actualice primero el repositorio, pase la CI, y luego implemente la copia revisada en LXC 109. No coloque credenciales de rclone ni contenido de copias de seguridad en Git, registros, tickets o documentación.