miyagi-backup.sh aktualisiert
shutdown fix and sleep 10 seconds for pbs store
This commit is contained in:
+75
-7
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user