miyagi-backup.sh aktualisiert

This commit is contained in:
2026-08-13 22:14:15 +02:00
parent 39417576b0
commit d76eadfb57
+108 -38
View File
@@ -300,6 +300,9 @@ run_pbs_log_clear() {
fi
}
vzdump_success=false
pbs_enabled_by_script=false
run_pbs_backup() {
if [[ "${BACKUPSERVER,,}" != "yes" ]]; then
log "PBS Backup übersprungen: BACKUPSERVER='$BACKUPSERVER' (muss 'yes' sein)"
@@ -309,88 +312,155 @@ run_pbs_backup() {
get_sourcehostname
log "Starte PBS Backup auf Host: $SOURCEHOST"
# PBS-Storage prüfen und ggf. aktivieren
log "Prüfe, ob PBS-Storage '$BACKUPSTORE' auf $SOURCEHOST aktiviert ist..."
if rssh root@"$SOURCEHOST" "pvesm status | grep -w '$BACKUPSTORE' | grep -q 'disabled'"; then
log "PBS-Storage '$BACKUPSTORE' ist deaktiviert aktiviere temporär und warte 10 Sekunden..."
rssh root@"$SOURCEHOST" "pvesm set '$BACKUPSTORE' --disable 0 && sleep 10"
pbs_enabled_by_script=true
else
log "PBS-Storage '$BACKUPSTORE' ist bereits aktiviert."
# ------------------------------------------------------------
# PBS-Storage prüfen und ggf. temporär aktivieren
# ------------------------------------------------------------
pbs_enabled_by_script=false
log "Prüfe, ob PBS-Storage '$BACKUPSTORE' auf $SOURCEHOST aktiviert ist..."
if rssh root@"$SOURCEHOST" \
"pvesm status | grep -w '$BACKUPSTORE' | grep -q 'disabled'"; then
log "PBS-Storage '$BACKUPSTORE' ist deaktiviert aktiviere temporär und warte 10 Sekunden..."
if rssh root@"$SOURCEHOST" \
"pvesm set '$BACKUPSTORE' --disable 0 && sleep 10"; then
pbs_enabled_by_script=true
log "PBS-Storage '$BACKUPSTORE' wurde erfolgreich aktiviert."
else
log "FEHLER: PBS-Storage '$BACKUPSTORE' konnte nicht aktiviert werden."
vzdump_success=false
return 1
fi
# PBS Namespace setzen (optional)
else
log "PBS-Storage '$BACKUPSTORE' ist bereits aktiviert."
fi
# ------------------------------------------------------------
# PBS Namespace setzen
# ------------------------------------------------------------
PBS_NS_ARG=()
if [[ -n "$PBS_NAMESPACE" && "${PBS_NAMESPACE,,}" != "none" ]]; then
PBS_NS_ARG=(--pbs-namespace "$PBS_NAMESPACE")
log "PBS Namespace aktiviert: $PBS_NAMESPACE"
else
PBS_NS_ARG=()
log "PBS Namespace nicht gesetzt Backup läuft im Standard-Datastore"
fi
# ------------------------------------------------------------
# Backup-Status zurücksetzen
# ------------------------------------------------------------
vzdump_success=false
# Versuch: vzdump mit Change Detection
## Eintrag muss in /etc/vzdump.conf entries-max 100000000
# ------------------------------------------------------------
# vzdump mit Change Detection
# ------------------------------------------------------------
log "Starte vzdump mit Change Detection..."
if rssh root@"$SOURCEHOST" vzdump --pbs-change-detection-mode metadata \
if rssh root@"$SOURCEHOST" \
vzdump --pbs-change-detection-mode metadata \
"${PBS_NS_ARG[@]}" \
--node "$SOURCEHOSTNAME" --storage "$BACKUPSTORE" \
--exclude "$BACKUPEXCLUDE" --mode snapshot --all 1 \
--node "$SOURCEHOSTNAME" \
--storage "$BACKUPSTORE" \
--exclude "$BACKUPEXCLUDE" \
--mode snapshot \
--all 1 \
--notes-template '{{guestname}}'; then
log "vzdump (Change Detection) erfolgreich."
vzdump_success=true
else
log "vzdump (Change Detection) fehlgeschlagen versuche Fallback ohne Change Detection..."
if rssh root@"$SOURCEHOST" vzdump \
# ----------------------------------------------------------
# Fallback ohne Change Detection
# ----------------------------------------------------------
if rssh root@"$SOURCEHOST" \
vzdump \
"${PBS_NS_ARG[@]}" \
--node "$SOURCEHOSTNAME" --storage "$BACKUPSTORE" \
--exclude "$BACKUPEXCLUDE" --mode snapshot --all 1 \
--node "$SOURCEHOSTNAME" \
--storage "$BACKUPSTORE" \
--exclude "$BACKUPEXCLUDE" \
--mode snapshot \
--all 1 \
--notes-template '{{guestname}}'; then
log "Fallback-vzdump erfolgreich."
vzdump_success=true
else
log "FEHLER: vzdump fehlgeschlagen auch im Fallback."
vzdump_success=false
fi
fi
# ------------------------------------------------------------
# PBS-Storage nach erfolgreichem Backup wieder deaktivieren
#
# WICHTIG:
# Nur deaktivieren, wenn dieses Script den Storage
# vorher selbst aktiviert hat.
# ------------------------------------------------------------
if [[ "$vzdump_success" == true && "$pbs_enabled_by_script" == true ]]; then
log "Deaktiviere temporär aktiviertes PBS-Storage '$BACKUPSTORE' auf $SOURCEHOST..."
if rssh root@"$SOURCEHOST" \
"pvesm set '$BACKUPSTORE' --disable 1"; then
log "PBS-Storage '$BACKUPSTORE' wurde wieder deaktiviert."
else
log "WARNUNG: PBS-Storage '$BACKUPSTORE' konnte nicht wieder deaktiviert werden."
fi
fi
# PBS-Storage ggf. wieder deaktivieren
if [[ "$vzdump_success" == true && "$pbs_enabled_by_script" == true ]]; then
log "Deaktiviere temporär aktiviertes PBS-Storage '$BACKUPSTORE' auf $SOURCEHOST..."
rssh root@"$SOURCEHOST" "pvesm set '$BACKUPSTORE' --disable 1"
# ------------------------------------------------------------
# Rückgabestatus
# ------------------------------------------------------------
if [[ "$vzdump_success" == true ]]; then
return 0
else
return 1
fi
}
# PBS-Storage ggf. wieder deaktivieren
if [[ "$vzdump_success" == true && "$pbs_enabled_by_script" == true ]]; then
log "Deaktiviere temporär aktiviertes PBS-Storage '$BACKUPSTORE' auf $SOURCEHOST..."
rssh root@"$SOURCEHOST" "pvesm set '$BACKUPSTORE' --disable 1"
fi
# Monitoring-Ausgabe
if [[ "$vzdump_success" == true ]]; then
# ================================================================
# Monitoring-Ausgabe
# ================================================================
if [[ "$vzdump_success" == true ]]; then
echo "0 DailyPBS - Daily Backup erfolgreich" > /tmp/cmk_tmp.out
else
else
echo "2 DailyPBS - Daily Backup FEHLGESCHLAGEN" > /tmp/cmk_tmp.out
fi
fi
{
{
echo "<<<local>>>"
cat /tmp/cmk_tmp.out
} > /tmp/90000_checkpbs
} > /tmp/90000_checkpbs
rscp /tmp/90000_checkpbs root@"$SOURCEHOST":/var/lib/check_mk_agent/spool \
rscp /tmp/90000_checkpbs \
root@"$SOURCEHOST":/var/lib/check_mk_agent/spool \
|| log "Fehler beim Übertragen des Monitoring-Outputs via SCP"
rm -f /tmp/cmk_tmp.out /tmp/90000_checkpbs
#write_pbs_status
rm -f /tmp/cmk_tmp.out /tmp/90000_checkpbs
#write_pbs_status
}
run_maintenance() {
run_maintenance() {
if [[ "${BACKUPSERVER,,}" != "yes" ]]; then
log "PBS Backup wird übersprungen (BACKUPSERVER=$BACKUPSERVER)"