From 1492a15871ba1314096db10e69b5d702dfb8bcff Mon Sep 17 00:00:00 2001 From: duffbeer2000 Date: Fri, 27 Dec 2019 14:40:26 +0100 Subject: [PATCH] Include automatic restore to iobroker_startup.sh Integration of automatic restore of an iobroker backup file. It detects if /opt/iobroker contains a single file and if so if it contains a "backup.json" and restores it. --- aarch64/scripts/iobroker_startup.sh | 24 +++++++++++++++++++++--- amd64/scripts/iobroker_startup.sh | 24 +++++++++++++++++++++--- armv7hf/scripts/iobroker_startup.sh | 24 +++++++++++++++++++++--- 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/aarch64/scripts/iobroker_startup.sh b/aarch64/scripts/iobroker_startup.sh index 9805355..359f110 100644 --- a/aarch64/scripts/iobroker_startup.sh +++ b/aarch64/scripts/iobroker_startup.sh @@ -110,9 +110,27 @@ else then echo "Existing installation of ioBroker detected in /opt/iobroker." else - echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" - echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." - exit 1 + files=(/opt/iobroker/*) + if [ ${#files[@]} -lt 2 ]; then + if tar -ztvf /opt/iobroker/*.tar.gz "backup/backup.json" &> /dev/null; then + echo "ioBroker Backup detected in /opt/iobroker. Restoring ioBroker..." + mv /opt/iobroker/iobroker_20*.tar.gz /opt/ + tar -xf /opt/initial_iobroker.tar -C / + mkdir /opt/iobroker/backups + rm -r /opt/iobroker/backups/* + mv /opt/iobroker_20*.tar.gz /opt/iobroker/backups/ + iobroker restore 0 + echo "Done." + else + echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker or a valid backup file!" + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + exit 1 + fi + else + echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + exit 1 + fi fi fi echo ' ' diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 9805355..359f110 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -110,9 +110,27 @@ else then echo "Existing installation of ioBroker detected in /opt/iobroker." else - echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" - echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." - exit 1 + files=(/opt/iobroker/*) + if [ ${#files[@]} -lt 2 ]; then + if tar -ztvf /opt/iobroker/*.tar.gz "backup/backup.json" &> /dev/null; then + echo "ioBroker Backup detected in /opt/iobroker. Restoring ioBroker..." + mv /opt/iobroker/iobroker_20*.tar.gz /opt/ + tar -xf /opt/initial_iobroker.tar -C / + mkdir /opt/iobroker/backups + rm -r /opt/iobroker/backups/* + mv /opt/iobroker_20*.tar.gz /opt/iobroker/backups/ + iobroker restore 0 + echo "Done." + else + echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker or a valid backup file!" + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + exit 1 + fi + else + echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + exit 1 + fi fi fi echo ' ' diff --git a/armv7hf/scripts/iobroker_startup.sh b/armv7hf/scripts/iobroker_startup.sh index 9805355..359f110 100644 --- a/armv7hf/scripts/iobroker_startup.sh +++ b/armv7hf/scripts/iobroker_startup.sh @@ -110,9 +110,27 @@ else then echo "Existing installation of ioBroker detected in /opt/iobroker." else - echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" - echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." - exit 1 + files=(/opt/iobroker/*) + if [ ${#files[@]} -lt 2 ]; then + if tar -ztvf /opt/iobroker/*.tar.gz "backup/backup.json" &> /dev/null; then + echo "ioBroker Backup detected in /opt/iobroker. Restoring ioBroker..." + mv /opt/iobroker/iobroker_20*.tar.gz /opt/ + tar -xf /opt/initial_iobroker.tar -C / + mkdir /opt/iobroker/backups + rm -r /opt/iobroker/backups/* + mv /opt/iobroker_20*.tar.gz /opt/iobroker/backups/ + iobroker restore 0 + echo "Done." + else + echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker or a valid backup file!" + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + exit 1 + fi + else + echo "There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!" + echo "Please check/ recreate mounted folder/ volume and restart ioBroker container." + exit 1 + fi fi fi echo ' '