restore.sh aktualisiert

main
sebastian.serfling 2026-03-18 11:56:33 +00:00
parent b8f2b02612
commit f1f23b154b
1 changed files with 27 additions and 11 deletions

View File

@ -2,7 +2,7 @@
# =============================================================================
# /opt/windmill-restore/restore.sh
# Windmill Backup Restore Worker
# Version: 1.0.14
# Version: 1.0.15
#
# Unterstützt sowohl VM (qm) als auch CT (pct) Backups.
# Backup-Typ wird automatisch aus dem Backup-Pfad erkannt (vm/ oder ct/).
@ -289,22 +289,38 @@ for i in range(1000, 2000):
echo " Restore-ID: $VM_ID_RESTORED"
# ═════════════════════════════════════════════════════════════════════════════
# [2.5/13] CONFIG-ONLY CHECK
# Config-only Restore um VM-Name zu ermitteln und zu prüfen ob ZIP bereits
# auf dem Backup-Server existiert → bei Fund: Restore überspringen
# [2.5/13] CONFIG-CHECK
# Config direkt aus PBS-Backup lesen (kein Restore nötig) um VM-Name zu
# ermitteln und zu prüfen ob ZIP bereits auf dem Backup-Server existiert.
# ═════════════════════════════════════════════════════════════════════════════
echo ""
echo "==> [2.5/13] Config-only Restore zum Prüfen..."
echo "==> [2.5/13] Config aus PBS-Backup lesen..."
CONFIG_VM_NAME=""
CONFIG_TMP="/tmp/pbs_config_${VM_ID_ORIGINAL}_$$.conf"
# proxmox-backup-client restore holt nur die Config-Datei aus dem Backup
# SNAPSHOT_PATH Format: "vm/100/2024-01-15T02:00:00Z"
# Config-Datei im Backup heißt "vm.conf" oder "pct.conf"
if [[ "$BACKUP_TYPE" == "ct" ]]; then
pct restore "$VM_ID_RESTORED" "$PVE_BACKUP_REF" --storage "$RESTORE_PATH" --config-only 1 2>/dev/null || true
CONFIG_VM_NAME=$(grep -m1 "^hostname:" /etc/pve/lxc/${VM_ID_RESTORED}.conf 2>/dev/null | awk -F': ' '{print $2}' | tr -d '[:space:]' || echo "")
pct destroy "$VM_ID_RESTORED" --purge 1 2>/dev/null || true
CONF_FILE_IN_BACKUP="pct.conf"
NAME_KEY="^hostname:"
else
qmrestore "$PVE_BACKUP_REF" "$VM_ID_RESTORED" --storage "$RESTORE_PATH" --config-only 1 2>/dev/null || true
CONFIG_VM_NAME=$(grep -m1 "^name:" /etc/pve/qemu-server/${VM_ID_RESTORED}.conf 2>/dev/null | awk -F': ' '{print $2}' | tr -d '[:space:]' || echo "")
qm destroy "$VM_ID_RESTORED" --purge 1 2>/dev/null || true
CONF_FILE_IN_BACKUP="vm.conf"
NAME_KEY="^name:"
fi
export PBS_PASSWORD
export PBS_REPOSITORY="${PBS_USER}@${PBS_HOST}:${DATASTORE}"
proxmox-backup-client restore "${BACKUP_TYPE}/${VM_ID_ORIGINAL}/$(echo "$SNAPSHOT_PATH" | cut -d/ -f3)" "$CONF_FILE_IN_BACKUP" "$CONFIG_TMP" 2>/dev/null || true
if [[ -f "$CONFIG_TMP" ]]; then
CONFIG_VM_NAME=$(grep -m1 "$NAME_KEY" "$CONFIG_TMP" 2>/dev/null | awk -F': ' '{print $2}' | tr -d '[:space:]' || echo "")
rm -f "$CONFIG_TMP"
echo " VM-Name aus Config: ${CONFIG_VM_NAME:-unbekannt}"
else
echo " Config nicht lesbar überspringe ZIP-Check."
fi
echo " VM-Name aus Config: ${CONFIG_VM_NAME:-unbekannt}"