46 lines
1.3 KiB
Bash
46 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
BACKUP_DIR="/gitea/backups"
|
|
TMP_BASE="/tmp/soloforge-restore-test"
|
|
CONTAINER_IMAGE="gitea/gitea:latest" # for future deeper tests if desired
|
|
|
|
mkdir -p "$TMP_BASE"
|
|
|
|
latest="$(ls -1t "$BACKUP_DIR"/gitea-dump-*.zip 2>/dev/null | head -n1 || true)"
|
|
|
|
if [[ -z "$latest" ]]; then
|
|
echo "[restore-test] No backup files found in $BACKUP_DIR"
|
|
forge-alert.sh "ERROR" "restore-test" "No backup files found in $BACKUP_DIR"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
echo "[restore-test] Using latest backup: $latest"
|
|
|
|
# Basic ZIP integrity test
|
|
echo "[restore-test] Running unzip -t ..."
|
|
if ! unzip -t "$latest" >/dev/null 2>&1; then
|
|
echo "[restore-test] unzip -t failed for $latest"
|
|
forge-alert.sh "ERROR" "restore-test" "Backup failed unzip test: $(basename "$latest")"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
# Optional: extraction smoke test
|
|
tmpdir="$(mktemp -d "$TMP_BASE/restore-test-XXXXXX")"
|
|
echo "[restore-test] Extracting into $tmpdir ..."
|
|
if ! unzip -qq "$latest" -d "$tmpdir"; then
|
|
echo "[restore-test] unzip extract failed for $latest"
|
|
forge-alert.sh "ERROR" "restore-test" "Backup failed extraction: $(basename "$latest")"
|
|
rm -rf "$tmpdir"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
# Clean up
|
|
rm -rf "$tmpdir"
|
|
|
|
echo "[restore-test] Backup passed unzip + extraction checks."
|
|
forge-alert.sh "INFO" "restore-test" "Backup $(basename "$latest") passed restore tests."
|