Openhab2 Backup via Bash-Script und Dropbox

Jeder der eine offene Home-Automation Lösung wie Openhab im Einatz hat, hat viele Stunden mit der aufwändigen Konfiguration verbracht - zudem liegen viele Messwerte in einer SQL Datenbank, welche man später via Grafana o.Ä. visualisieren und auswerten möchte. Datenverlust wäre sehr ärgerlich. Alle bereits gesammelten Datenpunkte wären verloren und die Konfiguration des geliebten Setups würde wieder Tage und Wochen verschlingen. Ich habe das Problem bei mir mit einem simplen Setup, bestehend aus einem Bash-Script, sowie Dropbox gelöst.
Dropbox Uploader
Um unser Backup später auf Dropbox speichern zu können, verwenden wir das Dropbox Uploader Repository von Andrea Fabrizi. Zuerst benötigt ihr Git auf Eurem Raspberry Pi, dazu Git via Command Line installieren:
sudo apt-get install gitgit clone https://github.com/andreafabrizi/Dropbox-Uploader.gitcd ~/Dropbox-Uploader./dropbox_uploader.shBackup Bash Script
Openhab2 bietet von Haus aus eine Backup Funktionalität an, diese machen wir uns zu Nutzen, um die Konfiguration von Openhab zu sichern. Im Standard werden jedoch keine Datenbanken gesichert, um diese auch mit in das Backup aufzunehmen, dumpen wir die komplette SQL Datenbank.
Zuerst müssen wir ein Bash-Script erstellen, ihr könnte dafür einen Texteditor Eurer Wahl verwenden, ich verwende hierfür Nano, ihr könnt natürlich auch vi, vim oder jeden anderen Editor verwenden:
nano openhab_backup.shZuerst definieren wir den Script-Type:
#!/bin/bashWir ziehen ein Backup einer kompletten MYSQL Datenbank und speichern es in einem .sql File, ihr müsst hier Euren Username, Password und die entsprechende Datenbank hinterlegen. Achtung: Ihr hinterlegt hier das Passwort des SQL Users im Klartext, ihr solltet Euch über das Sicherheitsrisko im Klaren sein.
mysqldump -u USER --password="PASSWORD" DATABASE > backup.sqlIm nächsten Schritt zippen wir das erstellte Datenbankbackup:
gzip backup.sqlJetzt verschieben wir das backup.sql.gz File in das Directory des Dropbox-Uploaders:
mv backup.sql.gz /home/openhabian/Dropbox-UploaderMit dem nachfolgenden Befehl laden wir das File auf Dropbox hoch, die Date section am Ende des Filenames definiert die Formatierung des Files, in unserem Fall wird es mit der Endung year_month_day abgespeichert:
(exec /home/openhabian/Dropbox-Uploader/dropbox_uploader.sh upload /home/openhabian/Dropbox-Uploader/backup.sql.gz sql_backup_date +%Y_%m_%d.gz)Anschließend können wir das File lokal löschen:
rm /home/openhabian/Dropbox-Uploader/backup.sql.gzJetzt ist das Config Backup von Openhab2 an der Reihe, dazu rufen wir das Backup Script von Openhab2 auf. Achtung: auch hier hinterlegen wir das Passwort des ROOT Users im Klartext.
echo ROOT-USER-PASSWORD | sudo -S openhab-cli backup backup_config.zipAnschließend verschieben wir das erstelle Config Backup in das Dropbox-Uploader Directory:
mv backup_config.zip /home/openhabian/Dropbox-UploaderMit dem nachfolgenden Befehl wir das File hochgeladen, die Notation des Files ist die selbe wie bereits beim oben beschriebenen Datenbank Backup:
(exec /home/openhabian/Dropbox-Uploader/dropbox_uploader.sh upload /home/openhabian/Dropbox-Uploader/backup_config.zip backup_config_date +%Y_%m_%d.zip)Zum Schluss löschen wir auch das Config Backup lokal, auch hier muss wieder mit Root Rechten gearbeitet werden, die Sicherheitsrisiken, welche durch das Hinterlegen des Root Passwortes im Klartext entstehen können, habe ich weiter oben beschrieben:
echo ROOT-USER-PASSWORD | sudo -S rm /home/openhabian/Dropbox-Uploader/backup_config.zipAutomatisierung des Backups via Cronjob
Ihr könnt Euer Backup jetzt jederzeit mit dem nachfolgenden Befehl ausführen.
sh openhab_backup.shBesser wäre es jedoch, wenn das Backup automatisiert, z.B. jeden Tag zu einer bestimmten Uhrzeit, ausgeführt werden würde. Dazu können wir uns das Crontab zu Nutzen machen. Dieses rufen wir mit folgendem Befehl auf:
crontab -eAm Ende des Files könnt ihr weitere Cronjobs hinzufügen. Mein Setup führt den Backup Job jede Nacht um 05:00 Uhr durch, dazu habe ich mir folgende Zeile hinzugefügt:
0 5 * * * sh /home/openhabian/openhab_backup.shIhr könnt selbstverständlich auch einen anderen Intervall wählen, der Cronjob Generator kann hierfür sehr hilfreich sein.
Abschließend
Mit der oben beschriebenen Methode lässt sich einfach ein rudimentäres Backup von Openhab2 realisieren, als Ziel muss nicht unbedingt Dropbox gewählt werden. Man könnte die Files auch auf eine NAS im lokalen Netzwerk, nach AWS, Azure, Google Drive etc. schieben.
Bitte bedenkt, dass wir nur die Datenbank und die Openhab2 Config gesichert haben, andere Scripts/Applications, welche ihr für Euer Setup benötigt sind nicht gesichert, das Bash Script lässt sich aber endlos erweitern und an Eure Wünsche anpassen.
Zudem steht Euer ROOT Password aktuell noch im Backup Script, das ließe sich über User-Rechte besser regeln, vor allem wenn man es produktiv einsetzen möchte.