Raspberrymatic – EINFACHE automatische Sicherung auf USB-Medium
Bereits seit der RaspberryMatic Version 2.27.8.20170410 gibt es die Möglichkeit, Backups nicht nur über die WebUI durchzuführen. Es ist seit dieser Version möglich über eine SSH-Verbindung ein Linux Programm per Kommando auszuführen. Hierbei wird eine Standard *.sbk Backupdatei auf der internen Micro-SD-Card erzeugt. Eine gute Idee wie ich finde, jedoch mit dem Problem, das der Backup auf der internen Micro-SD-Card erstellt wird. In diesem Artikel beschreibe ich, wie ihr mit Onboard Mitteln von RaspberryMatic eine automatische Sicherung auf einen an der Raspberry angeschlossenen USB-Stick realisieren könnt.
Bedeutung einer Sicherung
Viele Anwender von Computern oder SmartPhones haben schon die bittere Erfahrung gemacht was es bedeutet, wenn man seine Daten nicht gesichert hat. Das tut richtig weh und im schlimmsten Fall sind unwiederbringliche Dateien (Fotos) für immer verloren.
Da ich beruflich in der IT tätig bin und weiß wieviel Aufwand und Geld in eine sichere Backup-Lösung investiert wird, halte ich das auch für eine HomeMatic Installation für sehr wichtig.
Ich habe mir daher angewöhnt, vor allen Änderungen an meinem System (neue Aktoren oder Programme) eine Sicherung durchzuführen. Ebenso nach der durchgeführten Änderung. Somit habe ich immer einen Aufsetzpunkt, zu dem ich im Problemfall zurück kehren kann. Diese Vorgehensweise hat sich schon mehr als einmal bewährt.
Das eigentlich Problem dabei ist, immer daran zu Denken eine Sicherung durchzuführen. Hinzu kommt noch, das der Anwender die Sicherung manuell in der WebUI anstoßen muss.
Aus diesem Grund habe ich mir eine EINFACHE automatische Lösung erstellt und möchte euch diese hier beschreiben.
Voraussetzungen / Benötigte Hardware
Amazon | eBay | ELV | |
Raspberry Pi3 | Link | Link | Link |
Bausatz-Funkmodul | Link | Link | Link |
microSD Karte | Link | Link | Link |
Gehäuse | Link | Link | Link |
Gehäuse für HS | Link | Link | Link |
Netzteil für HS | Link | Link | Link |
USB für Netzteil HS | Link | Link | Link |
externe Antenne | Link | Link | — |
Um die hier beschriebene Lösung umzusetzen benötigt ihr folgende Komponeten:
- RaspberryMatic (ab Version 2.27.8.20170410)
- USB Stick, USB SSD oder USB Festplatte
- RaspberryMatic AddOn CuxD
Allgemeines
Es gibt im Netz bereits einige Lösungen um die Daten von HomeMatic automatisch auf einer NAS (Network Access Storage) zu sichern. Da nicht jeder Anwender von RaspberryMatic auch im Besitz einer NAS ist, habe ich hier eine einfache Möglichkeit für einen Backup der HomeMatic Daten anzubieten.
Es ist keine NAS erforderlich, lediglich ein USB Medium, welches einfach in einen der USB Steckplätze der Raspberry Pi einzustecken ist. Dann ein kleines WebUI Programm schreiben, in dem wir ein Skript aufrufen (CuxD) und schon wird die Sicherung auf das USB Medium zum gewünschten Zeitpunkt durchgeführt.
Vorbereitung USB Medium
Ihr könnt an die Raspberry Pi unterschiedliche USB Medien anschließen. Es können USB-Sticks, USB-Festplatten oder eine USB SSD sein.
Voraussetzungen
- Der USB-Speicher muss mit dem Dateisystem FAT/FAT32 oder NTFS formatiert sein.
- Wenn gewünscht, ein entsprechendes Verzeichnis nach dem Formatieren anlegen. Am Besten noch auf dem Windows PC, dann ist es nicht notwendig den Weg über SSH im Linux zu gehen.
- Wenn kein Verzeichnis angelegt wird, werden die Backup Dateien im Wurzelverzeichis des USB Mediums geschrieben.
Backup und Restore via SSH
Seit der Version 2.27.8.20170410 existiert in RaspberryMatic die Möglichkeit Backups, sowie den Restore von Backupdateien nicht nur über die WebUI durchzuführen, sondern diese auch mittels Kommandozeilenprogrammen (z.b. über eine SSH Verbindung) durchzuführen.
Backup Datei erstellen
Hierbei kann man eine Standard *.sbk Backupdatei mit folgendem Kommando erstellen: /bin/createBackup.sh <BACKUPDIR>
Standardmäßig wird ohne Angabe von <BACKUPDIR> durch diesen Aufruf dann im Verzeichnis /usr/local/tmp eine *.sbk Datei angelegt die man z.B. mit WINSCP von RaspberryMatic runterladen und entsprechend verwahren kann und die sich auch über das normale WebUI zurückladen lässt. Gibt man als ein anderes Verzeichnis an, so wird die Backupdatei dort abgelegt.
Restore einer Sicherung einspielen
Auch ein Restore der *.sbk Datei kann über die Kommandozeile (SSH) durchgeführt werden. Dazu kann man folgende Vorgehensweise anwenden:
- Über SSH als root anmelden
- Die gewünschte *.sbk Datei in das Verzeichnis /usr/local/tmp kopieren
- Den folgenden Befehl ausführen: /bin/restoreBackup.sh /usr/local/tmp/
- RaspberryMatic neustarten (mit dem Befehl „reboot“ oder über die WebUI.
Nach dem Neustart funktioniert eure RaspberryMatic mit dem zurück gespielten Stand. Ich habe diesen Weg getestet, verwende aber die Lösung über WebUI für den Restore.
Zusatzfunktionen in RaspberryMatic
Mit den beiden oben beschriebenen Programmen „createBackup“ und „restoreBackup“ habt ihr bereits zwei der zusätzlichen Funktionen in RaspberryMatic kennen gelernt. Damit funktioniert der Backup und das Restoren einwandfrei. Was ich ebenfalls sehr gut finde ist die Tatsache, das die Backupdatei mit den gleichen Namenskonventionen angelegt wird, wie es bei der Sicherung über die WebUI üblich ist.
Eine weitere sehr tolle Erweiterung ist das Programm „usbmount„. Dieses Feature ist seit März 2017 in RaspberryMatic eingebaut.
Auch bei einem Raspberry Pi macht es Sinn den Speicher erweitern zu können. Am besten eignen sich dafür USB-Sticks. Standardmäßig werden diese aber von Raspbian nicht automatisch erkannt und eingebunden. Mit „usbmount“ bekommen wir in RaspberryMatic die Möglichkeit, dass USB-Sticks automatisch eingebunden werden und dass darauf auch Dateien gespeichert werden können.
Mit Hilfe von „usbmount“ werden im Verzeichnis /media, wie im nachfolgenden Screenshot zu sehen ist, neue Verzeichnisse angelegt. Diese heißen von USB0 bis USB7.
Diese Verzeichnisse sind leer, solange sich dahinter kein USB-Stick verbirgt. Sobald wir einen USB-Stick in einen der USB-Slots einstecken, ändert sich das und wir können sehen, was sich auf dem USB-Stick befindet. Bei einem formatiertem Stick finden wir nur die „System Volume Information“.
Wenn wir den USB-Stick in den linken oberen USB-Slot stecken, erkennt RaspberryMatic automatisch, das in USB0 ein Stick eingesteckt wurde und wir bekommen den Inhalt im WINSCP angezeigt:
In den Screenshots könnt ihr auch sehen, das ein Raspberry Pi standardmäßig nicht über eine RealTimeClock (RTC) verfügt. Dadurch kommt es beim Hochfahren dazu, dass das Datum bis zur erfolgreichen Synchronisation mit einem NTP Server auf den 1.1.1970 gestellt ist. Dadurch kommt es teilweise dazu, das CCU Funktionen nur eingeschränkt funktionieren. Wie man ein solches RTC-Modul in einem Raspberry Pi innerhalb von RaspberryMatic in Betrieb nehmen kann, werde ich in einem separaten Artikel beschreiben
Voraussetzung CUx-Daemon
Da zur Steuerung des Backups Skripte verwendet werden, empfehle ich das AddOn CUx-Daemon (CUxD) zu verwenden. Es ist die deutlich bessere Methode um Systembefehle aufzurufen. Weil die Methode über „system.exec“ bei so etwas sehr schnell zu Problemen führt. Wie ihr das AddOn CUxD installiert und ein virtuelles Gerät einrichten könnt, habe ich im Artikel „AddOn CUx-Daemon (CUxD) – system.exec ersetzen“ beschrieben. Keine Sorge, das ist recht einfach.
Sicherung über WebUI Programm starten
Wie bereits aus anderen Artikeln bekannt, können wir über CuxD sehr unterschiedliche Befehle ausführen. So zum Beispiel „HTTP-Befehle“, aber eben auch den Aufruf von Programmen im Linux System.
Diese Fähigkeiten machen wir uns auch hier zu Eigen. Wir können dadurch die mächtigen Planungsmöglichkeiten der WebUI als Startbedingung nutzen und müssen das nicht über einen „cronjob“ im Linux einrichten.
Nachfolgend seht ihr das Programm, mit welchem ich täglich nachts um 2 Uhr eine Sicherung meiner HomeMatic Zentrale auf den USB-Stick durchführe.
Wie ihr oben sehen könnt, ist das Programm wirklich sehr einfach gehalten. Ausgelöst wird es täglich um 2 Uhr. Die Verzögerung von 30 Sekunden habe ich eingebaut, weil ich zur vollen Stunde bestimmte Aktionen in RaspberryMatic durchführe. Als Aktion wird ein kleines Skript ausgeführt mit nur einem CuxD Befehl. Wir rufen das Programm „createBackup“ auf und geben als Zielverzeichnis wie oben beschrieben über /media/usb0 den entsprechenden USB-Stick an.
Nachfolgend das Skript zum kopieren:
! --- Backup HomeMatic System auf USB-Stick an USB-Schnittstelle USB0 --- ! --- (c) Werner Weber - Technikkram.net ! --- Sicherung --- dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/createBackup.sh /media/usb0 ");
Test der Sicherung
Wir können natürlich diesen Befehl auch testweise über SSH absetzen. Ich verwende dazu nicht PUTTY, sondern lieber WINSCP, da ich dort eine angenehmere Benutzeroberfläche habe. Dazu bitte den folgenden Befehl absetzen:
/bin/createBackup.sh /media/usb0
Es dauert dann je nach Umfang der Installation ein paar Sekunden. Dann könnt ihr über WINSCP im Verzeichnis /media/usb0 nachschauen und seht dort die erstellte Sicherung:
Wie oben schon mal beschrieben hat die Sicherungsdatei die gleiche Namenskonvetion wie die Sicherungen, welche über die WebUI erstellt werden.
Auslastung des USB-Sticks
Ich habe in meinem Fall einen USB-Stick mit einer Kapazität von 16GB im Einsatz.
Nach Erstellung von 40 Sicherungen (bei täglich einer Sicherung) über Mit „usbmount„twas mehr als einen Monat habe ich mal eine Abfrage gemacht, um die Auslastung des USB-Sticks anzuzeigen. Dies könnt ihr mit dem nachfolgenden Befehl selbst durchführen:
df -h /dev/sda1
Wie ihr sehen könnt, habe ich nach der täglichen Sicherung von etwas mehr als einem Monat lediglich eine Auslastung von 1%. Damit sollte die Speicherkapazität kein Problem darstellen und es lassen sich viele Monate sichern.
Restore über WebUI durchführen
Wenn ihr den Restore nicht über SSH durchführen möchtet, dann ist es auch keinerlei Problem den USB-Stick aus der Raspberry Pi zu entnehmen und in euren PC einzustecken. Damit habt ihr die Möglichkeit über den gewohnten Weg mittels WebUI die gewünschte Sicherung zurück zuspielen.
Danach könnt ihr den USB-Stick wieder in die Raspberry Pi stecken und euer Backup Szenario läuft wie geplant weiter.
Weitere Optionen
Zur Zeit teste ich noch zwei weitere Skripte. Zum einen um die Auslastung des USB-Sticks in eine HomeMatic Variable zu schreiben. Diese möchte ich dann auswerten und eventuell auch auf dem Startbildschirm anzeigen.
Mit dem zweiten Skipt möchte ich Sicherungsdateien, welche ein bestimmtes Alter erreicht haben, automatisch gelöscht werden. Damit kann dann sicher gestellt werden, das der Backup nicht mehr funktioniert, weil der USB-Stick voll ist.
Sobald ich diese Skripte produktionsreif habe, werde ich im Blog darüber berichten.
Wichtiger Hinweis
Wenn ihr den Firmware Update über das AddOn rmupdate durchgeführt habt, ist es sehr wichtig, dass ihr nach dem erfolgreichen Update die Download Datei, welche im Rahmen der Updates gebraucht wurde, über das AddOn zu löschen (siehe Screenshot):
Solltet ihr dies nicht durchführen, wird euer nächster Backup eurer HomeMatic Daten sehr viel größer sein. Da die Download Datei mitgesichert wird. Dadurch wird die Backup Datei nicht nur größer, sondern auch die Laufzeit für den Backup ist erheblich länger.
Fazit
Ich führe auf diese Art und Weise nun schon eine Weile täglich meine Sicherung der HomeMatic Zentrale durch. Bisher hat es alles perfekt funktioniert und ich habe auch testweise schon mehrfach einen Restore durchgeführt.
Sicherheit USB-Stick
Da auf dem USB-Stick ja keine hohe Anzahl von Schreibvorgängen stattfindet, sollte das auch keinerlei Problem darstellen. Aus meiner Sicht ist für diese Anwendung ein USB-Stick völlig ausreichend. Eine Festplatte oder eine SSD ist glaube ich überproportioniert.
Doppelte Sicherung
Wenn jemand auf absolute Sicherheit setzen möchte, könnte er beispielsweise auch einen zweiten USB-Stick in einen weiteren Slot der Raspberry stecken und dort eine weitere Sicherung ablegen. Somit hat man dann quasi eine doppelte Sicherung auf unterschiedlichen Medien realisiert und erfüllt damit dann sehr hohe Sicherheits Anforderungen.
Was mich an dieser Lösung wirklich begeistert ist die Tatsache, das bis auf einen USB-Stick keine weitere (teure) Hardware benötigt wird und auch die komplette Software bereits im RaspberryMatic vorhanden ist. Vielen Dank dafür.
Viel Spass beim Ausprobieren und dem guten Gefühl, eure Daten gesichert zu haben.
Ich bin soeben auf diesen Artikel gestossen, da ich eine Möglichkeit suche, automatische Backups meiner CCU3 zu erstellen. Vielen Dank erstmal für die ausführliche Beschreibung. Ist es auch möglich die Sicherung anstatt auf einen USB-Stick auf ein Volume auf einem NAS zu erstellen? Ich habe im Netz zwar eine Anleitung (via SSH und Cux-Daemon) gefunden, bringe diese jedoch nicht zum Laufen.
Ich weiss, der Beitrag ist schon älter, vielleicht suchen Gleichgesinnte ebenfalls noch nach einer Lösung auf ein NAS ;)
Hallo, vielen Dank für die informative Erklärung des Backup-Scripts. ich plane das Script bei mir auf meiner Raspberrymatic in etwas abgewandelter Form einzusetzen.
Ich möchte, wie iim Artikel beschrieben, eine doppelte Sicherun realisieren. Diese soll allerdings nicht auf 2 USB-Sticks umgesetzt werden, sondern mit einem USB-Stick und einem Onlinspeicher (Strato Hidrive).Wie muss das Script angepasst werden, damit der Onlinespeicher automatisch bei jedem Neustart der Raspberrymatic gemountet wird? Könntest Du mir ggf. bei der Umsetzung behilflich sein? Vielen Dank im Voraus. Gruß Tobias
Hallo,
seit neuestem verlangt die CCU den Anschluss eines USB-Sticks, um Diagrammdaten speichern zu können. Ich habe also einen FAT32-formatierten Stick in den Raspberry gesteckt, aber die CCU erkennt den offenbar nicht. Meine Konfiguration:
Raspberry Pi 3 Modell B, piVCCU3-Image vom 26.09.2018. Woran könnte das liegen?
Gruß
fullcane
In der neuen Version 3.37.8.20180929 von RaspberryMatic ist einautomatisches Backup auf USB-Stick enthalten. Es lässt sich sogar die Anzahl der Backups einstellen. Für das Backup ist zwingend ein USB-Stick notwendig, ebenso werden Diagrammdaten nur noch auf USB-Stick bzw. ein gemountetes Speichervolumen geschrieben.
Hallo zusammen,
ist in der Backup-Datei alles enthalten?
Also sowas wie Node-Red wenn es auf dem RasPi läuft?
Mein File ist 52mb groß, da könnte schon einiges enthalten sein.
Gruß
Thorsten
Hallo Thorsten,
Der Backup umfasst genau den gleichen Umfang als würdest du via WebUI eine Sicherung anstoßen. Ich habe aktuell auch Node Red installiert und von dem Tag an hat sich die Größe der Backup Datei von 4.540 KB auf 52.310 KB verändert. Wenn Node Red wieder deinstalliert wird, reduziert sich sowohl die Größe der Backup Datei wie auch logischerweise die Laufzeit der Sicherung.
Gruss
Werner
Wichtiger Hinweis
Wenn ihr den Firmware Update über das AddOn rmupdate durchgeführt habt, ist es sehr wichtig, dass ihr nach dem erfolgreichen Update die Download Datei, welche im Rahmen der Updates gebraucht wurde, über das AddOn löscht.
Solltet ihr dies nicht durchführen, wird euer nächster Backup eurer HomeMatic Daten sehr viel größer sein. Da die Download Datei mitgesichert wird. Dadurch wird die Backup Datei nicht nur größer, sondern auch die Laufzeit für den Backup ist erheblich länger.
Ich habe einen entsprechenden Eintrag mit Screenshot in diesem Artikel eingefügt.
Werner
Hallo!
Zwei Fragen zu den Sicherungskopie-Dateien:
1. Die „normale“ Systemsicherung über das das WebGUI der Homematic („Backup erstellen“) hat eine Grüße von 7 bis 8 MB, die „automatische“ Systemsicherung über das Skript ist 15 MB groß. Beide sind heute erstellt.
Woran liegt es?
2. Auf dem MAC ist das Dateisymbol der „normale“ Systemsicherung ein Blatt mit Faltecke, das Dateisymbol der „automatischen“ Systemsicherung sieht aus wie das Terminal-Fenster.
Was ist der Unterschied?
Vielen Dank und viele Grüße
Michael
Hallo Michael,
das kann ich leider nicht beantworten, da bei mir die Backups die gleiche Größe aufweisen. Ich schicke dir nachher mal per Mail einen Screenshot zu.
Zu den Dateisymbolen auf der MAC Seite muss ich ebenfalls passen, da ich keinen MAC besitze und die Mimik nicht nachvollziehen kann.
Grüße
Werner
Hallo Werner vielen Dank für deinen tollen Beitrag. Hast du das kleine Script auch als „Text“ zum kopieren. Dann muss man diesen nicht abtipppen und vermeidet Fehler.
Vielen DANK TOM
Hallo Tom,
Danke für deine Frage. Ich habe den Artikel um den entsprechenden Code ergänzt. Diesen kannst du nun einfach kopieren und bei dir einsetzen.
Gruss
Werner
DANKE für die schnelle Umsetzung
Hi Werner,
vielen Dank für die Info!
genau so habe ich es auch gemacht.
Ich habe nur zusätzlich die CuxD devlogfile auf dem gleichen USB-Stick abgelegt.
Mir wäre es lieber, wenn man nur 3 oder 4 Backups auf dem Stick hätte. Die vorgehenden sollten automatisch gelöscht werden. Es wird ja bei einem crash oder bei einem Update sowieso das letzte Backup eingespielt.
Hallo Mathias,
schau dir mal den folgenden Artikel an. Dort habe ich beschrieben wie du deine nicht mehr benötigten Backups automatisch löschen kannst.
https://technikkram.net/2018/02/raspberrymatic-einfache-automatische-sicherung-auf-usb-medium-alte-backups-automatisch-loeschen
Grüße
Werner
Danke,
habe ich gerade getan!
Vielen Dank dafür!
Dann habe ich wieder was zum Spielen :)
Gruß,
Mathias