diff --git a/restore.sh b/restore.sh index 81f0480..08acda9 100644 --- a/restore.sh +++ b/restore.sh @@ -206,7 +206,7 @@ send_webhook() { "$QM_AGENT_OK" "$LOG_FILE") echo "" - echo "==> Sende Webhook..." + echo "$(date '+%Y-%m-%d %H:%M:%S') ==> Sende Webhook..." echo " Payload: $payload" local http_response http_response=$(curl -s -w "\n%{http_code}" \ @@ -250,7 +250,7 @@ trap 'STATUS="failed" # [0/13] 7Z-PASSWORT VOM PBS-SERVER HOLEN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [0/13] 7z-Passwort vom PBS-Server holen ($PBS_HOST)..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [0/13] 7z-Passwort vom PBS-Server holen ($PBS_HOST)..." mkdir -p "$KEY_DIR" chmod 700 "$KEY_DIR" @@ -280,7 +280,7 @@ echo " 7z-Passwort geladen ✓" # [1/13] SPACE-CHECK # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [1/13] Prüfe freien Speicherplatz auf $RESTORE_MOUNT..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [1/13] Prüfe freien Speicherplatz auf $RESTORE_MOUNT..." mkdir -p "$ZIP_DIR" FREE_KB=$(df "$RESTORE_MOUNT" 2>/dev/null | awk 'NR==2{print $4}' || echo "0") FREE_GB=$(( FREE_KB / 1024 / 1024 )) @@ -291,7 +291,7 @@ echo " Frei: ${FREE_GB} GB" # [2/13] ID ERMITTELN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [2/13] Ermittle IDs..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [2/13] Ermittle IDs..." VM_ID_ORIGINAL=$(echo "$SNAPSHOT_PATH" | grep -oP '\d+' | head -1 || echo "0") echo " Original-ID: $VM_ID_ORIGINAL (Typ: $BACKUP_TYPE)" @@ -321,7 +321,7 @@ echo " Restore-ID: $VM_ID_RESTORED" # ob ZIP bereits auf dem Backup-Server existiert → Restore überspringen # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [2.5/13] Config aus PBS-Backup lesen..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [2.5/13] Config aus PBS-Backup lesen..." CONFIG_VM_NAME="" CONFIG_TMP="/tmp/pbs_config_${VM_ID_ORIGINAL}_$$.conf" @@ -395,7 +395,7 @@ fi # [3/13] RESTORE # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [3/13] Restore vom PBS-Storage ($BACKUP_TYPE)..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [3/13] Restore vom PBS-Storage ($BACKUP_TYPE)..." echo " Backup-Ref: $PVE_BACKUP_REF" echo " Storage: $RESTORE_PATH" echo " ID: $VM_ID_RESTORED" @@ -421,7 +421,7 @@ echo " Restore abgeschlossen in ${RESTORE_DURATION}s" # [4/13] IMAGE_DIR DYNAMISCH ERMITTELN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [4/13] Ermittle Image-Verzeichnis..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [4/13] Ermittle Image-Verzeichnis..." STORAGE_BASE=$(pvesh get "/storage/${RESTORE_PATH}" --output-format json \ 2>/dev/null | python3 -c " import json, sys @@ -478,7 +478,7 @@ echo " Image-Größe: $(( ACTUAL_DISK_BYTES / 1024 / 1024 / 1024 )) GB" # [5/13] IMAGES PRÜFEN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [5/13] Prüfe Images..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [5/13] Prüfe Images..." if [[ ! -d "$IMAGE_DIR" ]] || [[ -z "$(ls -A "$IMAGE_DIR" 2>/dev/null)" ]]; then ERROR_MSG="IMAGE_DIR leer oder nicht vorhanden: $IMAGE_DIR" echo " FEHLER: $ERROR_MSG" @@ -498,7 +498,7 @@ echo " Images vorhanden ✓" # [6/13] VORBEREITEN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [6/13] Vorbereiten ($BACKUP_TYPE)..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [6/13] Vorbereiten ($BACKUP_TYPE)..." if [[ "$BACKUP_TYPE" == "ct" ]]; then pct unlock "$VM_ID_RESTORED" 2>/dev/null || true @@ -525,7 +525,7 @@ fi # [7/13] STARTEN & PRÜFEN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [7/13] Starte & prüfe ($BACKUP_TYPE)..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [7/13] Starte & prüfe ($BACKUP_TYPE)..." if [[ "$BACKUP_TYPE" == "ct" ]]; then pct start "$VM_ID_RESTORED" 2>/dev/null || true @@ -567,7 +567,7 @@ fi # [8/13] STOPPEN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [8/13] Stoppe $BACKUP_TYPE..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [8/13] Stoppe $BACKUP_TYPE..." if [[ "$BACKUP_TYPE" == "ct" ]]; then pct stop "$VM_ID_RESTORED" 2>/dev/null || true sleep 10 @@ -587,7 +587,7 @@ echo " Gestoppt." # [9/13] CONFIG SICHERN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [9/13] Config sichern..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [9/13] Config sichern..." if [[ "$BACKUP_TYPE" == "ct" ]]; then PVE_CONF="/etc/pve/lxc/${VM_ID_RESTORED}.conf" @@ -615,7 +615,7 @@ echo " Name: $VM_NAME" # [10/13] 7Z-ARCHIV # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [10/13] Erstelle verschlüsseltes 7z-Archiv (mx=${COMPRESS_LEVEL})..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [10/13] Erstelle verschlüsseltes 7z-Archiv (mx=${COMPRESS_LEVEL})..." ZIP_FILE="${ZIP_DIR}/${VM_NAME}-${VM_ID_ORIGINAL}.7z" ZIP_START=$(date +%s) @@ -639,7 +639,7 @@ echo " ZIP: $(( ZIP_SIZE_BYTES / 1024 / 1024 )) MB in ${ZIP_DURATION}s" # ═════════════════════════════════════════════════════════════════════════════ echo "" RSYNC_TARGET_DATE="${RSYNC_TARGET}/${LAST_DATE}" -echo "==> [11/13] Rsync / Datei-Transfer..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [11/13] Rsync / Datei-Transfer..." if [[ "$SKIP_RSYNC" == "1" ]]; then echo " Lokaler Modus: ZIP bereits in ${RSYNC_TARGET_DATE} – kein Rsync." @@ -697,7 +697,7 @@ fi # [12/13] AUFRÄUMEN # ═════════════════════════════════════════════════════════════════════════════ echo "" -echo "==> [12/13] Aufräumen..." +echo "$(date '+%Y-%m-%d %H:%M:%S') ==> [12/13] Aufräumen..." if [[ "$BACKUP_TYPE" == "ct" ]]; then pct destroy "$VM_ID_RESTORED" --purge 1 \ 2>/dev/null || echo " CT $VM_ID_RESTORED nicht mehr vorhanden."