miyagi-backup.sh aktualisiert

shutdown fix and sleep 10 seconds for pbs store
This commit is contained in:
2025-06-18 01:06:41 +02:00
parent 4e023cd4ef
commit c707cbd8df
+75 -7
View File
@@ -18,7 +18,6 @@ usage() {
exit 1 exit 1
} }
# Konfigurationsdatei initialisieren (nur wenn -c übergeben)
CONFIG_FILE="" CONFIG_FILE=""
while getopts "c:" opt; do while getopts "c:" opt; do
case "$opt" in case "$opt" in
@@ -35,7 +34,52 @@ if [[ -n "${CONFIG_FILE:-}" ]]; then
log "ERROR: Configuration file not found: $CONFIG_FILE" log "ERROR: Configuration file not found: $CONFIG_FILE"
exit 1 exit 1
fi fi
source "$CONFIG_FILE" source "$CONFIG_FILE"
# ==========================
# Konfigurationsprüfung
# ==========================
REQUIRED_VARS=(
SSHPORT
BACKUPSERVER
ZSYNC
MAINTDAY
SHUTDOWN
UPDATES
SOURCEHOST
ZFSROOT
ZFSSECOND
ZFSTRGT
ZPUSHTAG
ZPUSHMINKEEP
ZPUSHKEEP
ZPUSHLABEL
ZPUSHFILTER
PBSHOST
BACKUPSTORE
BACKUPSTOREPBS
BACKUPEXCLUDE
REPLEXCLUDE
)
MISSING_VARS=()
for var in "${REQUIRED_VARS[@]}"; do
if [[ -z "${!var:-}" ]]; then
MISSING_VARS+=("$var")
fi
done
if [[ "${#MISSING_VARS[@]}" -ne 0 ]]; then
log "Fehlende Konfigurationsvariablen:"
for var in "${MISSING_VARS[@]}"; do
log " - $var"
done
log "Breche ab bitte Konfigurationsdatei prüfen."
exit 1
else
log "Alle erforderlichen Konfigurationsvariablen sind gesetzt."
fi
fi fi
# Funktionen # Funktionen
@@ -128,10 +172,17 @@ run_remote_updates() {
} }
send_piggyback_data() { send_piggyback_data() {
# Falls SOURCEHOSTNAME leer ist, ueber SSH vom Zielhost ermitteln
if [[ -z "${SOURCEHOSTNAME:-}" ]]; then
log "SOURCEHOSTNAME is empty retrieving via SSH from $SOURCEHOST..."
SOURCEHOSTNAME=$(ssh "$SOURCEHOST" hostname)
log "Detected SOURCEHOSTNAME: $SOURCEHOSTNAME"
fi
local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)" local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)"
local filename="90000_${combined_host}" local filename="90000_${combined_host}"
log "Do not forget to add a Host in CMK named: ${combined_host} (without Agent, Piggyback enabled)!" log "Do nott forget to add a Host in CMK named: ${combined_host} (without Agent, Piggyback enabled)!"
log "Creating piggyback file: $filename" log "Creating piggyback file: $filename"
{ {
@@ -157,12 +208,16 @@ run_pbs_backup() {
# PBS-Storage ggf. aktivieren # PBS-Storage ggf. aktivieren
log "Checking if PBS storage '$BACKUPSTORE' is enabled on $SOURCEHOST..." log "Checking if PBS storage '$BACKUPSTORE' is enabled on $SOURCEHOST..."
if ssh root@"$SOURCEHOST" "pvesm status | grep -w '$BACKUPSTORE' | grep -q 'disabled'"; then if ssh root@"$SOURCEHOST" "pvesm status | grep -w '$BACKUPSTORE' | grep -q 'disabled'"; then
log "PBS storage '$BACKUPSTORE' is disabled. Attempting to enable..." log "PBS storage '$BACKUPSTORE' is disabled. Attempting to enable...sleep 10 Sekunden"
ssh root@"$SOURCEHOST" "pvesm set '$BACKUPSTORE' --disable 0 && sleep 2" ssh root@"$SOURCEHOST" "pvesm set '$BACKUPSTORE' --disable 0 && sleep 10"
pbs_enabled_by_script=true
else else
log "PBS storage '$BACKUPSTORE' is already enabled." log "PBS storage '$BACKUPSTORE' is already enabled."
pbs_enabled_by_script=false
fi fi
vzdump_success=false
# Hauptversuch mit --pbs-change-detection-mode # Hauptversuch mit --pbs-change-detection-mode
if ssh root@"$SOURCEHOST" vzdump --pbs-change-detection-mode metadata \ if ssh root@"$SOURCEHOST" vzdump --pbs-change-detection-mode metadata \
--node "$SOURCEHOSTNAME" --storage "$BACKUPSTORE" \ --node "$SOURCEHOSTNAME" --storage "$BACKUPSTORE" \
@@ -170,6 +225,7 @@ run_pbs_backup() {
--notes-template '{{guestname}}'; then --notes-template '{{guestname}}'; then
log "vzdump with change-detection-mode succeeded" log "vzdump with change-detection-mode succeeded"
vzdump_success=true
else else
log "Fallback: vzdump with change-detection-mode failed, trying without it..." log "Fallback: vzdump with change-detection-mode failed, trying without it..."
@@ -180,14 +236,21 @@ run_pbs_backup() {
--notes-template '{{guestname}}'; then --notes-template '{{guestname}}'; then
log "Fallback vzdump succeeded" log "Fallback vzdump succeeded"
vzdump_success=true
else else
log "ERROR: vzdump failed even after fallback" log "ERROR: vzdump failed even after fallback"
fi fi
fi fi
# Monitoring-Output # PBS-Storage wieder deaktivieren, wenn zuvor aktiviert und erfolgreich
if [[ $? -eq 0 ]]; then if [[ "$vzdump_success" == true && "$pbs_enabled_by_script" == true ]]; then
log "Disabling PBS storage '$BACKUPSTORE' again on $SOURCEHOST..."
ssh root@"$SOURCEHOST" "pvesm set '$BACKUPSTORE' --disable 1"
fi
# Monitoring-Output für Checkmk
if [[ "$vzdump_success" == true ]]; then
echo "0 DailyPBS - Daily Backup" > /tmp/cmk_tmp.out echo "0 DailyPBS - Daily Backup" > /tmp/cmk_tmp.out
else else
echo "2 DailyPBS - Daily Backup FAILED" > /tmp/cmk_tmp.out echo "2 DailyPBS - Daily Backup FAILED" > /tmp/cmk_tmp.out
@@ -197,6 +260,7 @@ run_pbs_backup() {
scp /tmp/90000_checkpbs root@"$SOURCEHOST":/var/lib/check_mk_agent/spool || log "Fehler beim SCP des Monitoring-Outputs" scp /tmp/90000_checkpbs root@"$SOURCEHOST":/var/lib/check_mk_agent/spool || log "Fehler beim SCP des Monitoring-Outputs"
} }
run_maintenance() { run_maintenance() {
if [[ "$(date +%u)" == "$MAINTDAY" ]]; then if [[ "$(date +%u)" == "$MAINTDAY" ]]; then
log "Running maintenance..." log "Running maintenance..."
@@ -240,7 +304,9 @@ run_scrub_stop_local() {
} }
shutdown_if_requested() { shutdown_if_requested() {
if [[ "$SHUTDOWN" == "yes" ]]; then log "SHUTDOWN-Variable: '${SHUTDOWN:-nicht gesetzt}'"
#if [[ "${SHUTDOWN,,}" == "yes" ]]; then
if [[ "$(echo "$SHUTDOWN" | tr '[:upper:]' '[:lower:]')" == "yes" ]]; then
send_piggyback_data send_piggyback_data
log "Shutting down now..." log "Shutting down now..."
shutdown now shutdown now
@@ -250,6 +316,8 @@ shutdown_if_requested() {
} }
main() { main() {
log "Backup-Routine startet in 60 Sekunden..."
sleep 60
log "Starting full backup routine..." log "Starting full backup routine..."
SOURCEHOSTNAME=$(ssh "$SOURCEHOST" hostname) SOURCEHOSTNAME=$(ssh "$SOURCEHOST" hostname)