feat: verify production backup restore

This commit is contained in:
ik
2026-09-06 14:24:26 +07:00
parent 870d9cc7f9
commit 66fb1625da
6 changed files with 67 additions and 14 deletions
+9 -5
View File
@@ -16,12 +16,16 @@ test -f "$source_dir/postgres.dump"
test -f "$source_dir/minio.tar.gz"
(cd "$source_dir" && sha256sum -c SHA256SUMS)
backup_root=$(dirname "$source_dir")
stamp=$(basename "$source_dir")
export BACKUP_DIRECTORY="$backup_root"
restore_tmp=$(mktemp -d "$backup_root/.rf4-restore.XXXXXX")
trap 'rm -rf "$restore_tmp"' EXIT INT TERM
tar -xzf "$source_dir/minio.tar.gz" -C "$restore_tmp"
restore_name=$(basename "$restore_tmp")
compose="docker compose --env-file .env.production -f compose.production.yaml"
$compose stop api web minio
env_file=${COMPOSE_ENV_FILE:-.env.production}
compose="docker compose --env-file $env_file -f compose.production.yaml"
$compose stop api web
$compose exec -T db sh -c 'pg_restore --clean --if-exists --exit-on-error --no-owner --no-acl -U "$POSTGRES_USER" -d "$POSTGRES_DB"' < "$source_dir/postgres.dump"
$compose run --rm storage-tool sh -c 'find /data -mindepth 1 -delete && tar -xzf "/backup/'"$stamp"'/minio.tar.gz" -C /data'
$compose up -d minio api web proxy
$compose run --rm --entrypoint /bin/sh storage-tool -c 'mc alias set local http://minio:9000 "$S3_ACCESS_KEY" "$S3_SECRET_KEY" >/dev/null && mc rm --recursive --force "local/$S3_BUCKET" >/dev/null 2>&1 || true; mc mb --ignore-existing "local/$S3_BUCKET" >/dev/null && mc mirror --overwrite "/backup/'"$restore_name"'/minio" "local/$S3_BUCKET"'
$compose up -d ${RESTORE_START_SERVICES:-minio api web proxy}
echo "Restore completed from: $source_dir"