Sicherung der Hausautomatisierung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38

Re: Sicherung der Hausautomatisierung

Beitrag von favorit626 »

Hallo,
auf der Platte ist die gesamte Openhab Installation fast alles was sonst so auf der SD-Karte wäre. Die SD-Karte braucht der RP nur zum starten,
der Rest spielt sich auf der externen Platte ab. Habe ich so gemacht weil die Lebensdauer der Karten ja sehr begrenzt ist.
Hast aber Recht die Sicherung auf dem gleichen Laufwerk ist glaube ich doof.

Gruß
Knut

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Sicherung der Hausautomatisierung

Beitrag von seppy »

Hi,
das Lebensdauerproblem der SD Karten halte ich für überbewertet ;-)
Meine Karte läuft seit zwei Jahren ohne Probleme. Ich würde per Cron täglich ein zip schreiben und das per script zum beispiel auf Dein NAS schreiben.
Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sicherung der Hausautomatisierung

Beitrag von udo1toni »

Ich lasse mittels rsnapshot stündlich ein Backup auf meinen Backup-Server ablegen. rsnapshot nutzt rsync als Dienst.

Auf dem Backup-Server gibt es dann ein Verzecihnis, in dem für jedes system, von dem Backups gezogen werden, ein Verzeichnis liegt, in dem wiederum verschiedene Verzeichnisse für stündliches, tägliches, wöchentliches und monatliches Backup liegen, dort wiederum eine bestimmte Anzahl (z.B. 8 stündliche, 7 tägliche, 5 wöchentliche und 3 monatliche Backups, heißt, wenn ich was verorgele, komme ich auf die Version von vor einer Stunde, wenn es mir ein paar Tage später einfallt, komme ich weiter zurück, dann natürlich mit schlechterer Auflösung.
der Witz bei rsync ist, dass es mit symbolischne Links arbeitet, d.h. eine unveränderte Datei nimmt nur einmal Platz weg, jede weitere "Kopie" ist nur ein Verweis auf das Original.
Wenn rsync eine Differenz zwischen dem letzten Backup und der Originaldatei feststellt, wird diese Datei als neue Kopie über den Symlink gespeichert. Meine 1.4TByte Daten (von diversen Systemen) nehmen auf dem Backup-Server ebenfalls ungefähr 1.4TByte ein (ein klein bisschen mehr ist es schon, das bewegt sich aber eher im einstelligen GByte-Bereich).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

madmike
Beiträge: 272
Registriert: 15. Apr 2018 17:09

Re: Sicherung der Hausautomatisierung

Beitrag von madmike »

hallo nochmal irgendwie komme ich nicht weiter,
also ich habe eine Bash -Datei kreiert namens backup.sh,
die sieht so aus:

Code: Alles auswählen

 #! /bin/bash
 sudo dd if= /dev/mmcblk0 of= /dev/sda
Diese habe ich mit dem Befehl:

Code: Alles auswählen

 sudo chmod +x backup.sh
dann habe ich sie gestartet:

Code: Alles auswählen

 ./backup.sh
läuft unter Putty einwandfrei Backup / Clon der Karte ist da.
Nun habe ich das EXEC-Binding 2.4.0 installiert über die Paper UI.

Dann habe ich folgendes Thing angelegt:

Code: Alles auswählen

 Thing exec:command:Backup [ cmmand="<./backup.sh> %2$s", interval=0,autorun=false ]
dann das Item:

Code: Alles auswählen

Switch Backup  "Backup"  <shield>  {channel="exec:command:Backup:run"}
dann die Sitemap:

Code: Alles auswählen

 Frame label="Backup"{
            Switch item=Backup
        }
 
Leider geht hier die das auslösen des Backups nicht hat jemand eine Idee was ich falsch mache??
der LOG eintrag sieht so aus:

Code: Alles auswählen

2019-01-13 23:47:25.308 [ome.event.ItemCommandEvent] - Item 'Backup' received command ON

2019-01-13 23:47:25.325 [nt.ItemStatePredictedEvent] - Backup predicted to become NULL
Über eine Idee wäre ich hocherfreut.
LG
Madmike

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sicherung der Hausautomatisierung

Beitrag von udo1toni »

Da Du sudo im Script nutzt, musst Du dem user openhab erlauben, mindestens diesen Befehl mittels sudo auszuführen, ohne dass ein Passwort abgefragt wird. Weiterhin musst Du Dich mindestens einmal als user openhab einloggen und sudo erfolgreich nutzen, denn beim ersten Aufruf kommt die bekannte Warnung ("Mit großer Macht kommt große Verantwortung."), die muss einmalig bestätigt werden (alternativ kann man sicher auch im home-Verzeichnis eine Datei hinterlegen, die sudo sonst beim ersten Aufruf dort speichert... Ich hab aber keine Ahnung, wie die heißt und aussieht.)

Der Login als User openhab ist etwas umständlich, da für diesen User keine bash gesetzt ist (eben um ein Login zu verhindern):

Code: Alles auswählen

sudo su - -s /bin/bash openhab
und man landet direkt im home-Verzeichnis von openhab, in einer normalen bash Shell.

Du hast den Pfad der Datei backup.sh nicht angegeben. Wenn Du die Datei in dne Ordner /etc/openhab2/scripts/ legst, kann das funktionieren (auch ohne das ./), besser ist es aber, den absoluten Pfad anzugeben, nur um sicherzugehen.

Ob das Script überhaupt aufgerufen wird, kannst Du feststellen, indem Du z.B. ein echo in eine ausgewählte Datei schickst (innerhalb des Scripts). Dann weißt Du, dass die opeHAB-Seite funktioniert (und solange Du das vor dem sudo einfügst, sollte echo auch nicht scheitern).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

madmike
Beiträge: 272
Registriert: 15. Apr 2018 17:09

Re: Sicherung der Hausautomatisierung

Beitrag von madmike »

Hallo Udo1toni,

erst mal Danke für Deine Antwort. Nun tauchen noch ein paar Fragen auf die ich als nicht so erfahrener Linuxuser habe. Zum einen hattest Du die Frage, wo die backup.sh liegt.

Sie liegt im Ordner /home/openhabian.

Ich kann die Datei ohne weiteres in den Ordner den du mir nanntest verschieben. Der Befehl den Du mit in Deiner Antwort hattest, kommt dieser in die bash.datei oder muss ich Ihn einmal ausführen und das war es ??.

Des weiteren habe ich noch nie ein echo gesendet, was muss ich tun ??
und letztlich wie sehen deiner Meinung nach meine Things, Items und Sidemap-Einträge aus ??

danke für Deine Mühe
Madmike

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sicherung der Hausautomatisierung

Beitrag von udo1toni »

Also...
madmike hat geschrieben: 14. Jan 2019 18:14 Nun tauchen noch ein paar Fragen auf die ich als nicht so erfahrener Linuxuser habe. Zum einen hattest Du die Frage, wo die backup.sh liegt.

Sie liegt im Ordner /home/openhabian.
openHAB läuft unter dem User openhab, nicht unter dem User openhabian. das home-Verzeichnis ist gewöhnlich dem Eigentümer vorbehalten. Ausnahmen sind nur User, die kein gewöhnliches home-Verzeichnis haben (z.B. der user openhab hat das openHAB Userdata Verzeichnis als home-Verzeichnis, dieses ist für jeden User lesbar. Das backup-script sollte aber besser unter /etc/openhab2/scripts/ liegen.
Der Befehl den Du mit in Deiner Antwort hattest, kommt dieser in die bash.datei oder muss ich Ihn einmal ausführen und das war es ??.
Dein Script enthält den Befehl sudo. sudo fordert beim Aufruf ein Admin-Passwort an. Die erste Voraussetzung ist, dass der User überhaupt berechtigt ist, sudo zu starten. Da der user openhab kein Passwort eingeben kann, musst Du außerdem dafür sorgen, dass keine Passwortabfrage kommt. Aber Achtung! Wenn man das falsch macht, reißt man eine Scheunenwand als Sicherheitslücke ein.
Der Befehl

Code: Alles auswählen

sudo visudo
ruft den default Editor auf, um die sudoers zu bearbeiten. Dabei stellt visudo beim speichern sicher, dass die Datei gültig ist. Deshalb immer visudo verwenden! In der Datei, die angezeigt wird, legst Du eine zusätzliche Zeile an, und zwar unterhalb einer Kommentarzeile

Code: Alles auswählen

# User privilege specification
(dort gibt es bereits eine Zeile für root)
Deine Zeile sieht so aus:

Code: Alles auswählen

openhab    ALL=(ALL:ALL) NOPASSWD: /etc/openhab2/scripts/backup.sh
was letztlich bedeutet, dass der User openhab den Befehl /etc/openhab2/scripts/baskup.sh in allen Kontexten ausführen darf, ohne ein passwort eingeben zu müssen.

Code: Alles auswählen

sudo su - -s /bin/bash openhab
dient dazu, sich als User openhab anzumelden. der User openhab hat normalerweise nicht die Erlaubnis, sich anzumelden, damit kann dieser User auch keine Dummheiten machen (falls jemand es schafft, über jetty auszubrechen)
Wenn Du als User openhab angemeldet bist, kannst Du das backup-script aufrufen.
Wenn alles richtig funktioniert hat, kommt einmalig die Bemerkung, dass mit großer Macht große Verantwortung einhergeht (oder so ähnlich), was Du mit der <ENTER>-Taste bestätigst. Anschließend sollte umgehend Dein Script mit root-Rechten laufen.
Des weiteren habe ich noch nie ein echo gesendet, was muss ich tun ??
echo ist ein Befehl, den Du in Dein Script einbauen kannst, um Textausgaben zu erzeugen.

Code: Alles auswählen

echo `date` Backup wird gestartet >> /var/log/backup.log
erzeugt z.B. in der Datei /var/log/backup.log eine Zeile, die so aussieht:

Code: Alles auswählen

Di 15. Jan 17:26:56 CET 2019 Backup wird gestartet
Voraussetzung ist dabei, dass die Datei bereits existiert und der user openhab mindestens Schreibrechte hat (weil /var/log/ root gehört). Das kannst Du erreichen, indem Du diesen Code zeile für Zeile ausführst:

Code: Alles auswählen

sudo touch /var/log/backup.log
sudo chmod 644 /var/log/backup.log
sudo chown openhab: /var/log/backup.log
Dies erzeugt die Datei, setzt Leserechte für alle und ändert den Besitzer der Datei in openhab, damit hat nur der User openhab Schreibrechte. Wenn Du dann das echo in Deinem Script oberhalb des eigentlichen Befehls einbaust und danach noch eine weitere Zeile mit echo, die auf das Ende hinweist, kannst Du in der log-Datei nachschauen, ob das Script gearbeitet hat.
und letztlich wie sehen deiner Meinung nach meine Things, Items und Sidemap-Einträge aus ??
Auf die hatte ich mich noch nicht gestürzt. :)

Code: Alles auswählen

Thing exec:command:Backup [ cmmand="<./backup.sh> %2$s", interval=0,autorun=false ]
Da sind schon einige Fehler drin. Es muss eher so aussehen (neuer Speicherort schon berücksichtigt)

Code: Alles auswählen

Thing exec:command:Backup [ command="backup.sh", autorun=false ]
Eventuell musst Du, wie erwähnt, den kompletten Pfad angeben, dann sieht's so aus:

Code: Alles auswählen

Thing exec:command:Backup [ command="/etc/openhab2/scripts/backup.sh", autorun=false ]
Da das Script keinen Parameter erwartet, müssen wir auch keinen übergeben :) Der Rest sieht erstmal gut aus.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Wohnort: Werl
Kontaktdaten:

Re: Sicherung der Hausautomatisierung

Beitrag von KlausGünther »

Jetzt noch eine Frage zum verständnis.

Was bringt mit denn die Tägliche Sicherung ?

Bisher habe ich es so gemacht, dass ich nach ein Änderung, wenn dann alles
so lief wie es soll, einfach die Raspi runtergefahren habe, dann von der Karte
ein Image und dann war ich damit fertig. Was spricht denn dagegen ?

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sicherung der Hausautomatisierung

Beitrag von udo1toni »

Ein Image sollte man tatsächlich nur dann erstellen, wenn man umfangreiche Änderungen vorgenommen hat (z.B. nachdem man Updates für 90 (oder eine andere beliebig große Zahl) Pakete eingespielt hat - einfach, weil es sonst jedes Mal wieder fällig wäre, diese Dateien upzudaten)

rsnapshot erstellt einfach stündlich ein Backup der Dateien, die man angibt (natürlich kann man auch Verzeichnisse angeben und bestimmte Dateien oder Unterverzeichnisse blacklisten, so dass sie ausgelassen werden)

Der Unterschied zu einem gewöhnlichen Backup besteht darin, dass dieses Backup "keinen" Platz benötigt, solange die Dateien sich nicht ändern. Wenn eine Datei verändert wird, benötigt sie einmal zusätzlichen Platz, eben für die geänderte Version, ansonsten aber nicht. Wenn ich aber auf eine bestimmte Version zurück möchte, habe ich die freie Auswahl, welche Version ich nutzen will. Es werden (bei meiner Konfiguration) ca. 20 Versionen aufbewahrt, mit unterschiedlichem zeitlichen Abstand. Es kann nicht jeder beliebige Zeitpunkt wiederhergestellt werden, aber die üblichen Varianten (von vor 1,2,3,4,5 Stunden, letzte Woche, vorletzten Monat...) und die Dateien liegen virtuell als normale Dateien da, kein umständliches Zurückspielen, ich greife einfach auf die Kopie zurück, die zum gewählten Zeitpunkt angelegt wurde.

Ich muss nicht daran denken, das zu tun, denn es passiert automatisch (openHAB ist nur eines der Systeme, die bei mir so gesichert werden)

Man kann natürlich ein Image auch jederzeit von Hand erzeugen, ich bin mir auch nicht sicher, dass das Image eines laufenden Systems komplett ohne Schluckauf startet, aber das Image über die Oberfläche auszulösen ist schon nett.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

madmike
Beiträge: 272
Registriert: 15. Apr 2018 17:09

Re: Sicherung der Hausautomatisierung

Beitrag von madmike »

Hallo zusammen, leider habe ich trotz Deiner super Anleitung keinen Erfolg.
Ich bekomme immer wieder Fehlermeldung in der log das die Datei nicht gefunden wurde.
Habt Ihr noch eine Idee ??
Zu der Frage warum ich es so mache möchte:
Ich möchte gerne bei Bedarf das Backup auslösen, also zum Beispiel bei/vor Updates.
Ich brauche keine täglich Backup, da das System stabil läuft und ich mittlerweile kaum noch Erweiterungen mache.
Der Nächste Umstieg wird erst wieder mit dem neuen Mqtt-Binding sein. aber das ist ein anderes Ding.
Also wäre die Lösung zu einem für mich, benutzerbedingten Lösung optimal.
Das mag jeder anderes sehen, aber ich wäre super zufrieden.
mfg
Madmike

Antworten