Files
Portainer/backups/kopia/restore-smoke-test.sh
T
Eduardo David Paredes Vara 616b20f285 feat(backups): añadir stack de backups cifrados con Kopia + Cloudflare R2
- init-r2-repository.sh: inicializa repositorio Kopia en R2
- run-backup.sh: ejecuta backup de rutas definidas en backup-paths.txt
- pre-backup-dumps.sh: vuelca bases de datos (Postgres, MariaDB) antes del backup
- kopia-common.sh: funciones compartidas de autenticación y configuración
- restore-smoke-test.sh: test de restauración para verificar integridad
- backup-paths.txt / excludes.txt: rutas y exclusiones del backup
- systemd/: unidades kopia-server, kopia-docker-backup (service + timer)
- traefik-kopia.yml: exposición del servidor Kopia vía Traefik
- env.example: plantilla de variables (credenciales R2, contraseña repo)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:38 +00:00

29 lines
757 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck disable=SC1091
source "$SCRIPT_DIR/kopia-common.sh"
require_cmd kopia
require_cmd jq
require_real_env KOPIA_PASSWORD
TARGET="${1:-/tmp/kopia-restore-smoke-test}"
SNAPSHOT_PATH="${2:-/opt/kopia/staging/dumps}"
mkdir -p "$TARGET"
log "Finding latest snapshot for $SNAPSHOT_PATH"
SNAPSHOT_ID="$(kopia_cmd snapshot list "$SNAPSHOT_PATH" --json | jq -r '.[0].snapshots[-1].id')"
if [[ -z "$SNAPSHOT_ID" || "$SNAPSHOT_ID" == "null" ]]; then
echo "No snapshot found for $SNAPSHOT_PATH" >&2
exit 1
fi
log "Restoring $SNAPSHOT_ID to $TARGET"
kopia_cmd snapshot restore "$SNAPSHOT_ID" "$TARGET"
log "Restore smoke test completed: $TARGET"