restore.sh aktualisiert

main
sebastian.serfling 2026-03-17 09:17:07 +00:00
parent 4abe094358
commit 3a1214f0b7
1 changed files with 26 additions and 5 deletions

View File

@ -298,11 +298,22 @@ print(cfg.get('path', ''))
if [[ -n "$STORAGE_BASE" ]]; then
if [[ "$BACKUP_TYPE" == "ct" ]]; then
# CT-Images liegen unter private/ oder rootdir/
if [[ -d "${STORAGE_BASE}/private/${VM_ID_RESTORED}" ]]; then
IMAGE_DIR="${STORAGE_BASE}/private/${VM_ID_RESTORED}"
else
IMAGE_DIR="${STORAGE_BASE}/rootdir/${VM_ID_RESTORED}"
# CT auf dir-Storage: alle möglichen Pfade durchsuchen
# Reihenfolge: images/ → private/ → rootdir/ (je nach Storage-Konfiguration)
IMAGE_DIR=""
for candidate in "${STORAGE_BASE}/images/${VM_ID_RESTORED}" "${STORAGE_BASE}/private/${VM_ID_RESTORED}" "${STORAGE_BASE}/rootdir/${VM_ID_RESTORED}"; do
if [[ -d "$candidate" ]] && [[ -n "$(ls -A "$candidate" 2>/dev/null)" ]]; then
IMAGE_DIR="$candidate"
echo " CT-Image gefunden unter: $IMAGE_DIR"
break
else
echo " Nicht gefunden: $candidate"
fi
done
# Falls kein Verzeichnis gefunden → find als letzter Versuch
if [[ -z "$IMAGE_DIR" ]]; then
IMAGE_DIR=$(find "$STORAGE_BASE" -maxdepth 2 -type d -name "$VM_ID_RESTORED" 2>/dev/null | head -1 || echo "")
[[ -n "$IMAGE_DIR" ]] && echo " CT-Image via find: $IMAGE_DIR"
fi
else
IMAGE_DIR="${STORAGE_BASE}/images/${VM_ID_RESTORED}"
@ -316,6 +327,16 @@ else
fi
echo " WARNUNG: Storage-Pfad nicht ermittelt, nutze Fallback: $IMAGE_DIR"
fi
# Letzter Fallback falls IMAGE_DIR noch leer
if [[ -z "$IMAGE_DIR" ]]; then
if [[ "$BACKUP_TYPE" == "ct" ]]; then
IMAGE_DIR="/var/lib/vz/private/${VM_ID_RESTORED}"
else
IMAGE_DIR="/var/lib/vz/images/${VM_ID_RESTORED}"
fi
echo " WARNUNG: Kein Image-Verzeichnis gefunden, nutze Fallback: $IMAGE_DIR"
fi
echo " Image-Dir: $IMAGE_DIR"
ACTUAL_DISK_BYTES=$(du -sb "$IMAGE_DIR" 2>/dev/null | awk '{print $1}' || echo "0")