From d6e697a7ff0325bfdc2ea24eda1b48c5f7854fdb Mon Sep 17 00:00:00 2001 From: Lutz Bender Date: Wed, 12 Oct 2022 09:41:07 +0200 Subject: [PATCH] make restore of mosquitto.db optional --- runs/backup.sh | 13 ++++++++----- runs/restore.sh | 18 +++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/runs/backup.sh b/runs/backup.sh index bfc666ac10..412cc3f64f 100644 --- a/runs/backup.sh +++ b/runs/backup.sh @@ -4,21 +4,24 @@ BACKUPDIR="$OPENWBBASEDIR/web/backup" . "$OPENWBBASEDIR/helperFunctions.sh" backup() { - openwbDebugLog MAIN 0 "creating new backup: $FILENAME" + # $1: name for new backup file # remove old backup files openwbDebugLog MAIN 1 "deleting old backup files if present" rm "$BACKUPDIR/"* - BACKUPFILE="$BACKUPDIR/$FILENAME" # tell mosquitto to store all retained topics in db now openwbDebugLog MAIN 1 "sending 'SIGUSR1' to mosquitto" - sudo pkill -e -SIGUSR1 mosquitto + sudo pkill --echo -SIGUSR1 mosquitto # give mosquitto some time to finish sleep 0.2 # create backup file - openwbDebugLog MAIN 1 "creating new backup file: $BACKUPFILE" - sudo tar --exclude="$BACKUPDIR" --exclude="$OPENWBBASEDIR/.git" -czf "$BACKUPFILE" "$OPENWBBASEDIR/" "/var/lib/mosquitto/" + BACKUPFILE="$BACKUPDIR/$1" + openwbDebugLog MAIN 0 "creating new backup file: $BACKUPFILE" + sudo tar --verbose --create --gzip --file="$BACKUPFILE" \ + --exclude="$BACKUPDIR" \ + --exclude="$OPENWBBASEDIR/.git" \ + "$OPENWBBASEDIR/" "/var/lib/mosquitto/" openwbDebugLog MAIN 1 "setting permissions of new backup file" sudo chown pi:www-data "$BACKUPFILE" sudo chmod 664 "$BACKUPFILE" diff --git a/runs/restore.sh b/runs/restore.sh index 0e6c96ec5e..b84ae688a9 100755 --- a/runs/restore.sh +++ b/runs/restore.sh @@ -10,19 +10,19 @@ LOGFILE="$OPENWBBASEDIR/web/tools/upload/restore.log" echo "$(date +"%Y-%m-%d %H:%M:%S") Restore of backup started..." echo "****************************************" echo "Step 1: setting flag 'update in progress' and wait for control loop to finish" - echo 1 > "$OPENWBBASEDIR/ramdisk/updateinprogress" + echo 1 >"$OPENWBBASEDIR/ramdisk/updateinprogress" # Wait for regulation loop(s) and cron jobs to end, but with timeout in case a script hangs - pgrep -f "$OPENWBBASEDIR/(regel\\.sh|runs/cron5min\\.sh|runs/cronnightly\\.sh)$" | \ + pgrep -f "$OPENWBBASEDIR/(regel\\.sh|runs/cron5min\\.sh|runs/cronnightly\\.sh)$" | timeout 15 xargs -n1 -I'{}' tail -f --pid="{}" /dev/null echo "****************************************" echo "Step 2: creating working directory \"$WORKINGDIR\"" mkdir -p "$WORKINGDIR" echo "****************************************" echo "Step 3: extracting archive to working dir \"$WORKINGDIR\"..." - if ! sudo tar -vxf "$SOURCEFILE" -C "$WORKINGDIR"; then + if ! sudo tar --verbose --extract --file="$SOURCEFILE" --directory="$WORKINGDIR"; then echo "something went wrong! aborting restore" echo "Wiederherstellung fehlgeschlagen! Bitte Protokolldateien prüfen." >"$RAMDISKDIR/lastregelungaktiv" - echo 0 > "$OPENWBBASEDIR/ramdisk/updateinprogress" + echo 0 >"$OPENWBBASEDIR/ramdisk/updateinprogress" exit 1 fi echo "****************************************" @@ -30,9 +30,13 @@ LOGFILE="$OPENWBBASEDIR/web/tools/upload/restore.log" mv -v -f "${WORKINGDIR}${OPENWBBASEDIR}/." "${OPENWBBASEDIR}/" echo "****************************************" echo "Step 5: restoring mosquitto db..." - sudo systemctl stop mosquitto.service - sleep 2 - sudo mv -v -f "${WORKINGDIR}${MOSQUITTODIR}/mosquitto.db" "$MOSQUITTODIR/mosquitto.db" + if [[ -f "${WORKINGDIR}${MOSQUITTODIR}/mosquitto.db" ]]; then + sudo systemctl stop mosquitto.service + sleep 2 + sudo mv -v -f "${WORKINGDIR}${MOSQUITTODIR}/mosquitto.db" "$MOSQUITTODIR/mosquitto.db" + else + echo "Backup does not contain mosquitto.db. Skipping restore." + fi echo "****************************************" echo "Step 6: cleanup after restore..." sudo rm "$SOURCEFILE"