[gelöst] Versioniertes & inkrementelles Backup von fhem auf NAS

Begonnen von FhemPiUser, 30 Oktober 2015, 09:53:58

Vorheriges Thema - Nächstes Thema

FhemPiUser

Hallo,

ich möchte gerne ein tägliches Backup des fhem-Verzeichnisses auf meinen Synology NAS einrichten. Wenn ich den eingebauten backup-Befehl verwende, wird das gesamte fhem-Verzeichnis inkl. der Logfiles getargzed, was bei mir aufgrund der Größe der Logfiles täglich >100MB groß wäre. Das wären >36GB/Jahr und wäre mir zu groß, vor allem da fast alles durch die Logfiles käme und ohnehin redundant wäre, da in den Logfiles ja nur Zeilen hinzukommen, aber sich keine verändern. Ich brauche also theoretisch nicht mehrere Versionen der Logfiles sondern immer nur die letzte Version der Logfiles als Backup aufheben. ausserdem wäre hier ein inkrementelles backup sinnvoll.  Andererseits möchte ich gerne mehrere Versionen der config-Dateien wie fhem.cfg backupen.

Wie löst ihr das? Hat dafür mal jemand eine Lösung gebaut?

Tedious

Hi,

bei mir läuft das so dass ich die Logs direkt auf ein NAS schreibe (in ein dediziertes Verzeichnis). Die Backups laufen in ein Verzeichnis auf dem RPI und werden per Cronjob jede Nacht auf das NAS in ein dediziertes Verzeichnis kopiert. Das Verzeichnis auf dem RPI und auf dem NAS wird einmal proch Woche per Cornjob geleert, mit einem Tag Versatz. Somit habe ich immer mindestens eine aktuelle (und bis zu max. 6 ältere) Versionen verfügbar. Zu dem Zeitpunkt an dem auf dem NAS nur eine Datei liegt verschiebt ein Cronjob die Datei in einen seperaten Archivordner in dem denn ein "weekly-Backup" liegt, also 4 pro Monat. Hoffe mal das ist so verständlich ;)

Zusammengefasst:

RPI --> Verzeichnis mit max. 6 Backups, nächtlich auf NAS gespiegelt und wöchentlich geleert
NAS --> Verzeichnis mit max. 6 Backups und wöchentlich geleert (1 Tag versatz zu RPI)
NAS-Archiv --> ein "weekly Backup", diesel leere und räume ich händisch auf (alle paar Wochen mal, ginge auch per CRON - ist mir aber so lieber.. Kontrolle)

Zudem wird der Ordner der TabletUI alle 2 Stunden mit cp -a auf das NAS gespiegelt (auch in ein seperates Verzeichnis).

Um den Überblick zu behalten und Fehler zu vermeiden sind alle Ordner seperat gemountet und liegen nicht innerhalb eines Mounts als Unterordner.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Markus M.

Ich habe meinen FHEM Ordner (Logs ausgeschlossen) in meiner Dropbox.
Automatische Versionierung jeder noch so kleinen Änderung für 30 Tage und man kommt von überall ran.
Auf mein NAS wird wöchentlich das komplette System gesichert.
Nur mal so als Idee ;)
Aktuell weder Smarthome noch FHEM vorhanden

FhemPiUser

Gute Ideen. Statt Dropbox würde ich lieber meinen NAS nutzen.

Aktuell wäre meine Idee, dass ich mit angepasstem backup-Skript täglich erstmal lokale Backups nur der config-Dateien (ohne Logs) als tar.gz ins fhem-backup-Verzeichnis per notify machen lasse (Größe ca 100Kb) und dann das ganze fhem-Verzeichnis inkl. dieser config-Backups regelmäßig per rsync auf meinen NAS synchronisiere. Da ich ungern irgendwo Passwörter für den Zugriff auf meinen NAS speichern möchte, wäre die Idee, dass der NAS sich auf meinem Raspberry per ssh-Zertifikat einloggt und per rsync die Dateien abholt. Hat das schonmal jemand mit rsync gemacht und z.B. schon gute rsync-Konfigurationen?

betateilchen

Zitat von: FhemPiUser am 30 Oktober 2015, 11:59:36
Aktuell wäre meine Idee, dass ich mit angepasstem backup-Skript täglich erstmal lokale Backups nur der config-Dateien

Wenn Du statt mit config-Dateien mit der Konfigurationsdatenbank arbeiten würdest, hättest Du eine Versionierung automatisch, weil vorherige Versionen immer in der Datenbank bleiben.

Selbst angelegte gplot Dateien (und einige andere Dateien - RSS Layouts, holiday-Dateien, 99_myUtils.pm use - auch) liegen bei Verwendung der Konfigurationsdatenbank auch in der Datenbank. Für Logfiles gibt es das Modul DbLog, das ebenfalls in eine Datenbank schreibt. Es müssen also nur die beiden Datenbanken gesichert werden und kein vollständiges Installationsverzeichnis.

Das Sichern eines kompletten fhem-Verzeichnisses als Backup ergibt für mich überhaupt keinen Sinn, weil sich ein fhem im "Neuzustand" jederzeit problemlos in kürzester Zeit herstellen läßt  Es fehlt dann nur noch die eigene Konfiguration und z.B. selbst angelegte gplot Dateien und Log.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FhemPiUser

Danke betateilchen, aber Umstellung auf Datenbank steht evtl. mal irgendwann an, aber momentan reicht mir Dateinbasiert.

Hab jetzt ein Backup-Skript "fhem_cfgs_backup.sh" erstellt für tägliches Backup der Config-Dateien. Dabei werden immer nur Backups gemacht, wenn sich tatsächlich etwas geändert hat:


#!/bin/bash

NeusteDatei=/opt/fhem/backup/`ls -rtp1 /opt/fhem/backup |egrep -v "\/$" | tail -1`

AktDatei=/opt/fhem/backup/fhem_cfgs_backup_`date "+%F"`.tar.gz

if tar -dzf $NeusteDatei -C /opt/fhem . > /dev/null
then
  echo "Backup: Keine Änderung seit letzten Backup."
else
  tar -C /opt/fhem -czf $AktDatei ./log/fhem.save ./certs ./configDB.pm ./FHEM/fhem_user.cfg ./FHEM/99_myUtils.pm ./fhem.cfg ./fhem.cfg.backup ./fhem.cfg.save ./fhem_cfgs_backup.sh ./scripts ./www/gplot
fi

if [ $? -ne 0 ]; then
  echo "backup error"
else
  echo "backup done"
fi


Dieses Skript wird über ein Notify täglich ausgeführt:


define n_backup notify *23:45:00 backup
attr global backupcmd ./fhem_cfgs_backup.sh


Der Synology NAS loggt sich täglich im FHEM Rapsberry ein und holt per rsync die Dateien. Dazu muss man erstmal ssh login ohne Passwort mit Hilfe von ssh-keygen einrichten. Dann habe ich im Aufgabenplaner rsync als Befehl eingerichtet.

rsync -avz -e "ssh" fhem@<IP-Adresse>:/opt/fhem <NAS Backup Dir>

Nach den Tests scheint es zu laufen..


jnewton957

Zitat von: Tedious am 30 Oktober 2015, 10:13:41


Zusammengefasst:

RPI --> Verzeichnis mit max. 6 Backups, nächtlich auf NAS gespiegelt und wöchentlich geleert
NAS --> Verzeichnis mit max. 6 Backups und wöchentlich geleert (1 Tag versatz zu RPI)
NAS-Archiv --> ein "weekly Backup", diesel leere und räume ich händisch auf (alle paar Wochen mal, ginge auch per CRON - ist mir aber so lieber.. Kontrolle)


Hallo,

das klingt nach BestPractice oder Musterlösung und könnte ein WIKI Eintrag Wert sein :-)

Kannst du bitte deine cronjob Datei/Einträge posten und eben für andere das näher das WIE beschreiben. Wäre Klasse.

Grüße

Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

masterpete23

Zitat von: Markus M. am 30 Oktober 2015, 11:48:53
Ich habe meinen FHEM Ordner (Logs ausgeschlossen) in meiner Dropbox.
Automatische Versionierung jeder noch so kleinen Änderung für 30 Tage und man kommt von überall ran.
Auf mein NAS wird wöchentlich das komplette System gesichert.
Nur mal so als Idee ;)
Hi,
könntest du irgendwo beschreiben, wie das funktioniert?
Danke

Tedious

Zitat von: jnewton957 am 22 November 2015, 18:42:40
Kannst du bitte deine cronjob Datei/Einträge posten und eben für andere das näher das WIE beschreiben. Wäre Klasse.

Hi, ist keine Raketenwissenschaft - und ich bin kein Programmierer, das geht ggf eleganter (?)... Pfade muss man anpassen...

Nachts um 12 startet der folgende Cronjob:

#!/bin/bash
sudo rm -r /media/nas
sudo cp /opt/fhem/backup/* /media/nas


--> Verzeichnis auf dem NAS wird geleert und Backup-Ordner auf das NAS kopiert. Sind also redundant.

Zu einem Tag Deiner Wahl (z.B. Samstags morgens 9.00 Uhr)sicherst Du auf dem NAS per Cronjob das Backup in ein anderes Verzeichnis:

#!/bin/bash
sudo cp /shares/WHS_Backup/Backup_FHEM/* /shares/WHS_Backup/FHEM_alt


Leeren musst Du nicht, das macht ja FHEM um Mitternacht. Somit hast Du Redundanz.

Am selben Tag kurz kurz vor Mitternacht schicke ich ein

#!/bin/bash
sudo rm -r /opt/fhem/backup


los, der leert das FHEM-Backup-Verzeichnis.

Das Spiel beginnt von neuem. Auf dem bei mir genannten "FHEM_alt" Verzeichnis liegen natürlich denn mehrere Sicherungen. Die räume ich ab und an denn händisch auf und behalte eine Kopie pro Woche, maximal 4 Wochen lang. Das ginge auch per Cron, aber da will ich gerne die Hand drauf haben.

Du hast also quasi an allen Tagen der Woche eine Redundanz auf NAS und FHEM. Samstag morgens kopiert er die NAS-Daten in ein anderes Verzeichnis (darf in der Syntax KEIN Unterverzeichnis sein(!!)). Am Samstag hast Du somit dreifache Redundanz einer Woche. Kurz vor dem nächsten Backup leert er das Backup-Verzeichnis auf dem FHEM, beim Backup auf das NAS auch das NAS-Verzeichnis. Du hast also ein Wochenbackup im "FHEM_alt"-Verzeichnis und je ein aktuelles Backup auf FHEM und auf dem NAS. Und, wie gesagt - das "FHEM_alt"-Backup räume ich ab und an mal von Hand auf - ginge auch per Cron.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...