miyagi-backup.sh aktualisiert
This commit is contained in:
+113
-43
@@ -300,6 +300,9 @@ run_pbs_log_clear() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vzdump_success=false
|
||||||
|
pbs_enabled_by_script=false
|
||||||
|
|
||||||
run_pbs_backup() {
|
run_pbs_backup() {
|
||||||
if [[ "${BACKUPSERVER,,}" != "yes" ]]; then
|
if [[ "${BACKUPSERVER,,}" != "yes" ]]; then
|
||||||
log "PBS Backup übersprungen: BACKUPSERVER='$BACKUPSERVER' (muss 'yes' sein)"
|
log "PBS Backup übersprungen: BACKUPSERVER='$BACKUPSERVER' (muss 'yes' sein)"
|
||||||
@@ -309,88 +312,155 @@ run_pbs_backup() {
|
|||||||
get_sourcehostname
|
get_sourcehostname
|
||||||
log "Starte PBS Backup auf Host: $SOURCEHOST"
|
log "Starte PBS Backup auf Host: $SOURCEHOST"
|
||||||
|
|
||||||
# PBS-Storage prüfen und ggf. aktivieren
|
# ------------------------------------------------------------
|
||||||
|
# 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..."
|
log "Prüfe, ob PBS-Storage '$BACKUPSTORE' auf $SOURCEHOST aktiviert ist..."
|
||||||
if rssh root@"$SOURCEHOST" "pvesm status | grep -w '$BACKUPSTORE' | grep -q 'disabled'"; then
|
|
||||||
|
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..."
|
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
|
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
|
||||||
|
|
||||||
else
|
else
|
||||||
log "PBS-Storage '$BACKUPSTORE' ist bereits aktiviert."
|
log "PBS-Storage '$BACKUPSTORE' ist bereits aktiviert."
|
||||||
pbs_enabled_by_script=false
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# PBS Namespace setzen (optional)
|
# ------------------------------------------------------------
|
||||||
|
# PBS Namespace setzen
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
PBS_NS_ARG=()
|
||||||
|
|
||||||
if [[ -n "$PBS_NAMESPACE" && "${PBS_NAMESPACE,,}" != "none" ]]; then
|
if [[ -n "$PBS_NAMESPACE" && "${PBS_NAMESPACE,,}" != "none" ]]; then
|
||||||
PBS_NS_ARG=(--pbs-namespace "$PBS_NAMESPACE")
|
PBS_NS_ARG=(--pbs-namespace "$PBS_NAMESPACE")
|
||||||
log "PBS Namespace aktiviert: $PBS_NAMESPACE"
|
log "PBS Namespace aktiviert: $PBS_NAMESPACE"
|
||||||
else
|
else
|
||||||
PBS_NS_ARG=()
|
|
||||||
log "PBS Namespace nicht gesetzt – Backup läuft im Standard-Datastore"
|
log "PBS Namespace nicht gesetzt – Backup läuft im Standard-Datastore"
|
||||||
fi
|
fi
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Backup-Status zurücksetzen
|
||||||
|
# ------------------------------------------------------------
|
||||||
vzdump_success=false
|
vzdump_success=false
|
||||||
|
# ------------------------------------------------------------
|
||||||
# Versuch: vzdump mit Change Detection
|
# vzdump mit Change Detection
|
||||||
## Eintrag muss in /etc/vzdump.conf entries-max 100000000
|
# ------------------------------------------------------------
|
||||||
log "Starte 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[@]}" \
|
"${PBS_NS_ARG[@]}" \
|
||||||
--node "$SOURCEHOSTNAME" --storage "$BACKUPSTORE" \
|
--node "$SOURCEHOSTNAME" \
|
||||||
--exclude "$BACKUPEXCLUDE" --mode snapshot --all 1 \
|
--storage "$BACKUPSTORE" \
|
||||||
|
--exclude "$BACKUPEXCLUDE" \
|
||||||
|
--mode snapshot \
|
||||||
|
--all 1 \
|
||||||
--notes-template '{{guestname}}'; then
|
--notes-template '{{guestname}}'; then
|
||||||
|
|
||||||
log "vzdump (Change Detection) erfolgreich."
|
log "vzdump (Change Detection) erfolgreich."
|
||||||
vzdump_success=true
|
vzdump_success=true
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
log "vzdump (Change Detection) fehlgeschlagen – versuche Fallback ohne Change Detection..."
|
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[@]}" \
|
"${PBS_NS_ARG[@]}" \
|
||||||
--node "$SOURCEHOSTNAME" --storage "$BACKUPSTORE" \
|
--node "$SOURCEHOSTNAME" \
|
||||||
--exclude "$BACKUPEXCLUDE" --mode snapshot --all 1 \
|
--storage "$BACKUPSTORE" \
|
||||||
|
--exclude "$BACKUPEXCLUDE" \
|
||||||
|
--mode snapshot \
|
||||||
|
--all 1 \
|
||||||
--notes-template '{{guestname}}'; then
|
--notes-template '{{guestname}}'; then
|
||||||
|
|
||||||
log "Fallback-vzdump erfolgreich."
|
log "Fallback-vzdump erfolgreich."
|
||||||
vzdump_success=true
|
vzdump_success=true
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
log "FEHLER: vzdump fehlgeschlagen – auch im Fallback."
|
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
|
||||||
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"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# PBS-Storage ggf. wieder deaktivieren
|
# ------------------------------------------------------------
|
||||||
if [[ "$vzdump_success" == true && "$pbs_enabled_by_script" == true ]]; then
|
# Rückgabestatus
|
||||||
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
|
if [[ "$vzdump_success" == true ]]; then
|
||||||
echo "0 DailyPBS - Daily Backup erfolgreich" > /tmp/cmk_tmp.out
|
return 0
|
||||||
else
|
else
|
||||||
echo "2 DailyPBS - Daily Backup FEHLGESCHLAGEN" > /tmp/cmk_tmp.out
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
{
|
|
||||||
echo "<<<local>>>"
|
|
||||||
cat /tmp/cmk_tmp.out
|
|
||||||
} > /tmp/90000_checkpbs
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ================================================================
|
||||||
|
# Monitoring-Ausgabe
|
||||||
|
# ================================================================
|
||||||
|
|
||||||
|
if [[ "$vzdump_success" == true ]]; then
|
||||||
|
echo "0 DailyPBS - Daily Backup erfolgreich" > /tmp/cmk_tmp.out
|
||||||
|
else
|
||||||
|
echo "2 DailyPBS - Daily Backup FEHLGESCHLAGEN" > /tmp/cmk_tmp.out
|
||||||
|
fi
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "<<<local>>>"
|
||||||
|
cat /tmp/cmk_tmp.out
|
||||||
|
} > /tmp/90000_checkpbs
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
run_maintenance() {
|
||||||
|
|
||||||
run_maintenance() {
|
run_maintenance() {
|
||||||
if [[ "${BACKUPSERVER,,}" != "yes" ]]; then
|
if [[ "${BACKUPSERVER,,}" != "yes" ]]; then
|
||||||
log "PBS Backup wird übersprungen (BACKUPSERVER=$BACKUPSERVER)"
|
log "PBS Backup wird übersprungen (BACKUPSERVER=$BACKUPSERVER)"
|
||||||
|
|||||||
Reference in New Issue
Block a user