diff --git a/miyagi-backup.sh b/miyagi-backup.sh index aaf400f..1e05c29 100644 --- a/miyagi-backup.sh +++ b/miyagi-backup.sh @@ -47,6 +47,13 @@ if [[ -n "${CONFIG_FILE:-}" ]]; then : "${CHECKZFS_SPOOL:=1}" : "${CHECKZFS_SPOOL_MAXAGE:=90000}" + : "${SPOOL_DIR:=/var/lib/check_mk_agent/spool}" + : "${SPOOL_PREFIX_PBS:=120000}" + : "${SPOOL_PREFIX_PIGGYBACK:=100000}" + : "${SPOOL_PREFIX_PIGGYBACK_EXTERNAL:=100000}" + : "${SPOOL_PREFIX_CHECKZFS_EXTERNAL:=120000}" + : "${SPOOL_CLEANUP_DAYS:=7}" + REQUIRED_VARS=( SOURCEPORT BACKUPSERVER ZSYNC MAINTDAY SHUTDOWN UPDATES SOURCEHOST ZFSROOT ZFSSECOND ZFSTRGT ZPUSHTAG ZPUSHMINKEEP ZPUSHKEEP ZPUSHLABEL @@ -278,7 +285,7 @@ run_remote_updates() { send_piggyback() { get_sourcehostname local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)" - local filename="90000_${combined_host}" + local filename="${SPOOL_PREFIX_PIGGYBACK}_${combined_host}" log "Reminder: Add a host named ${combined_host} in CMK (without Agent, Piggyback enabled)!" log "Creating piggyback file: $filename" @@ -289,8 +296,10 @@ send_piggyback() { echo "<<<<>>>>" } > "$filename" - if rscp "$filename" "$SOURCEHOST:/var/lib/check_mk_agent/spool/"; then + if rscp "$filename" "$SOURCEHOST:${SPOOL_DIR}/"; then log "Piggyback data successfully sent to $SOURCEHOST" + rssh root@"$SOURCEHOST" "find '${SPOOL_DIR}' -maxdepth 1 -name '*_${combined_host}' -not -name '$(basename "$filename")' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \ + || log "WARNUNG: Aufräumen alter Piggyback-Spool-Dateien auf $SOURCEHOST fehlgeschlagen" else log "ERROR: Failed to send piggyback data to $SOURCEHOST" fi @@ -439,16 +448,21 @@ run_pbs_backup() { echo "2 DailyPBS - Daily Backup FEHLGESCHLAGEN" > /tmp/cmk_tmp.out fi + local pbs_spool_file="${SPOOL_PREFIX_PBS}_checkpbs" + { echo "<<>>" cat /tmp/cmk_tmp.out - } > /tmp/90000_checkpbs + } > "/tmp/${pbs_spool_file}" - rscp /tmp/90000_checkpbs \ - root@"$SOURCEHOST":/var/lib/check_mk_agent/spool \ - || log "Fehler beim Übertragen des Monitoring-Outputs via SCP" + if rscp "/tmp/${pbs_spool_file}" root@"$SOURCEHOST":"${SPOOL_DIR}"; then + rssh root@"$SOURCEHOST" "find '${SPOOL_DIR}' -maxdepth 1 -name '*_checkpbs' -not -name '${pbs_spool_file}' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \ + || log "WARNUNG: Aufräumen alter PBS-Spool-Dateien auf $SOURCEHOST fehlgeschlagen" + else + log "Fehler beim Übertragen des Monitoring-Outputs via SCP" + fi - rm -f /tmp/cmk_tmp.out /tmp/90000_checkpbs + rm -f /tmp/cmk_tmp.out "/tmp/${pbs_spool_file}" #write_pbs_status @@ -504,7 +518,7 @@ run_scrub_stop() { } write_pbs_status() { - local spool_file="/var/lib/check_mk_agent/spool/90000_checkpbs_local" + local spool_file="${SPOOL_DIR}/${SPOOL_PREFIX_PBS}_checkpbs_local" local repo="$BACKUPSTOREPBS" local tmpfile tmpfile=$(mktemp) @@ -613,7 +627,7 @@ send_piggyback_external() { log "Ermittelter SOURCEHOSTNAME: $SOURCEHOSTNAME" local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)" - local spool_file="90000_${combined_host}_external" + local spool_file="${SPOOL_PREFIX_PIGGYBACK_EXTERNAL}_${combined_host}_external" local temp_dir temp_dir=$(mktemp -d) @@ -625,8 +639,10 @@ send_piggyback_external() { echo "<<<<>>>>" } > "$temp_dir/$spool_file" - if scp -P "$EPIGGYBACK_PORT" "$temp_dir/$spool_file" "$EPIGGYBACK_HOST:/var/lib/check_mk_agent/spool/"; then + if scp -P "$EPIGGYBACK_PORT" "$temp_dir/$spool_file" "$EPIGGYBACK_HOST:${SPOOL_DIR}/"; then log "Piggyback-Daten erfolgreich an $EPIGGYBACK_HOST gesendet: $spool_file" + ssh -p "$EPIGGYBACK_PORT" "$EPIGGYBACK_HOST" "find '${SPOOL_DIR}' -maxdepth 1 -name '*_${combined_host}_external' -not -name '${spool_file}' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \ + || log "WARNUNG: Aufräumen alter Piggyback-Spool-Dateien auf $EPIGGYBACK_HOST fehlgeschlagen" else log "Fehler beim Übertragen der Piggyback-Daten an $EPIGGYBACK_HOST" rm -rf "$temp_dir" @@ -678,7 +694,7 @@ send_checkzfs_external() { local combined="miyagi-${SOURCEHOSTNAME}-$(hostname)-${ZPUSHTAG}" local spoolfile="/tmp/${combined}_checkzfs_external" - local spooldest="120000_${combined}_checkzfs_external" + local spooldest="${SPOOL_PREFIX_CHECKZFS_EXTERNAL}_${combined}_checkzfs_external" log "Führe checkzfs aus..." { @@ -693,8 +709,10 @@ send_checkzfs_external() { --output checkmk } > "$spoolfile" - if scp -P "$ECHECKZFS_PORT" "$spoolfile" root@"$ECHECKZFS_HOST":/var/lib/check_mk_agent/spool/"$spooldest"; then + if scp -P "$ECHECKZFS_PORT" "$spoolfile" root@"$ECHECKZFS_HOST":"${SPOOL_DIR}/${spooldest}"; then log "Spool-Datei erfolgreich übertragen an $ECHECKZFS_HOST:$spooldest" + ssh -p "$ECHECKZFS_PORT" root@"$ECHECKZFS_HOST" "find '${SPOOL_DIR}' -maxdepth 1 -name 'miyagi-${SOURCEHOSTNAME}-$(hostname)-*_checkzfs_external' -not -name '${spooldest}' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \ + || log "WARNUNG: Aufräumen alter checkzfs-Spool-Dateien auf $ECHECKZFS_HOST fehlgeschlagen" else log "Fehler beim Übertragen der Spool-Datei an $ECHECKZFS_HOST" fi