restore.sh aktualisiert

main
sebastian.serfling 2026-03-16 13:20:59 +00:00
parent 83342b9d07
commit d8c3a4d72b
1 changed files with 8 additions and 5 deletions

View File

@ -101,7 +101,8 @@ SNAPSHOT_PATH=$(echo "$BACKUP_PATH" | cut -d: -f2)
PVE_BACKUP_REF="${PBS_STORAGE}:backup/${SNAPSHOT_PATH}" PVE_BACKUP_REF="${PBS_STORAGE}:backup/${SNAPSHOT_PATH}"
# ── Pfade & Messvariablen ───────────────────────────────────────────────────── # ── Pfade & Messvariablen ─────────────────────────────────────────────────────
ZIP_DIR="${RESTORE_MOUNT}/zips" LAST_DATE=$(date +"%Y-%m-%d" -d "1 day ago")
ZIP_DIR="${RESTORE_MOUNT}/zips/${LAST_DATE}"
BACKUP_SERVER_HOST=$(cat /opt/windmill-restore/backup_server_host 2>/dev/null \ BACKUP_SERVER_HOST=$(cat /opt/windmill-restore/backup_server_host 2>/dev/null \
|| echo "backup-server") || echo "backup-server")
@ -463,17 +464,19 @@ echo " ZIP: $(( ZIP_SIZE_BYTES / 1024 / 1024 )) MB in ${ZIP_DURATION}s"
# 3 Versuche mit 60s Pause + Größenvergleich lokal vs. remote. # 3 Versuche mit 60s Pause + Größenvergleich lokal vs. remote.
# ═════════════════════════════════════════════════════════════════════════════ # ═════════════════════════════════════════════════════════════════════════════
echo "" echo ""
echo "==> [10/12] Rsync → ${BACKUP_SERVER_HOST}:${RSYNC_TARGET}..." # Rsync-Ziel mit Datumsordner
RSYNC_TARGET_DATE="${RSYNC_TARGET}/${LAST_DATE}"
echo "==> [10/12] Rsync → ${BACKUP_SERVER_HOST}:${RSYNC_TARGET_DATE}..."
MAX_RETRIES=3 MAX_RETRIES=3
rsync_transfer() { rsync_transfer() {
rsync -avz --progress --timeout=300 \ rsync -avz --progress --timeout=300 \
"$ZIP_FILE" \ "$ZIP_FILE" \
"${BACKUP_SERVER_HOST}:${RSYNC_TARGET}/" \ "${BACKUP_SERVER_HOST}:${RSYNC_TARGET_DATE}/" \
2>&1 2>&1
} }
ssh "$BACKUP_SERVER_HOST" "mkdir -p '${RSYNC_TARGET}'" 2>/dev/null || true ssh "$BACKUP_SERVER_HOST" "mkdir -p '${RSYNC_TARGET_DATE}'" 2>/dev/null || true
while [[ $RSYNC_RETRIES -lt $MAX_RETRIES ]]; do while [[ $RSYNC_RETRIES -lt $MAX_RETRIES ]]; do
if rsync_transfer; then if rsync_transfer; then
@ -497,7 +500,7 @@ done
if [[ "$RSYNC_OK" == "true" ]]; then if [[ "$RSYNC_OK" == "true" ]]; then
REMOTE_SIZE=$(ssh "$BACKUP_SERVER_HOST" \ REMOTE_SIZE=$(ssh "$BACKUP_SERVER_HOST" \
"stat -c%s '${RSYNC_TARGET}/$(basename "$ZIP_FILE")'" \ "stat -c%s '${RSYNC_TARGET_DATE}/$(basename "$ZIP_FILE")'" \
2>/dev/null || echo "0") 2>/dev/null || echo "0")
if [[ "$REMOTE_SIZE" != "$ZIP_SIZE_BYTES" ]]; then if [[ "$REMOTE_SIZE" != "$ZIP_SIZE_BYTES" ]]; then
echo " WARNUNG: Remote ${REMOTE_SIZE}B != lokal ${ZIP_SIZE_BYTES}B" echo " WARNUNG: Remote ${REMOTE_SIZE}B != lokal ${ZIP_SIZE_BYTES}B"