From f1f23b154b6db9898f522019e6ba313a29938916 Mon Sep 17 00:00:00 2001 From: "sebastian.serfling" Date: Wed, 18 Mar 2026 11:56:33 +0000 Subject: [PATCH] restore.sh aktualisiert --- restore.sh | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/restore.sh b/restore.sh index bbd8070..5e89c9c 100644 --- a/restore.sh +++ b/restore.sh @@ -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}"