Hallo zusammen,
ich möchte via SH Script ein tägliches Backup meiner FHEM Lösung auf meine NAS sichern.
Das manuelle ausführen des SH Script via Telnet funktioniert ohne Probleme.
Das tägliche Ausführen des Backups über FHEM leider nicht, es wird nur einmal ausgeführt und die restlichen Tage nicht.
Anbei mein Code aus der FHEM.cfg
#dummy FHEM.Backup
define FHEM.Backup dummy
attr FHEM.Backup event-on-change-reading state
attr FHEM.Backup room FHEM
attr FHEM.Backup webCmd on:off
define FHEMBackupOn notify FHEM.Backup:on {system ("sudo -u root /opt/fhem/FHEM/backup.sh &")}
#Automatisches Backup um 22:25:00 Uhr starten
define FHEMBackup_ON at *22:25:00 set FHEM.Backup on
Hat mir jemand einen Tip?
Gruß
Michael
Hi,
machst Du irgendwo ein "set FHEM.Backup off"?
...außerdem: Was hast Du gegen cron? Das ist für so etwas besser geeignet.
Gruß,
Thorsten
Hallo,
nein ein "set FHEM.Backup off" mache ich nicht.
Du meinst ich sollte noch ein:
define FHEMBackup_OFF at *22:45:00 set FHEM.Backup off
hinterlegen?
Mit dem Thema cron Job habe ich mich bisher noch nicht beschäftigt.
Gruß
Michael
Wieso gehst Du über einen Dummy ?
Das at kann doch den Befehl auch selbst absetzen...
Hi,
Und einfach über FHEM backup (https://fhem.de/commandref.html#global)gehen ist wohl auch zu kompliziert.
Gruß Otto
Hi,
das FHEM Backup wäre natürlich eine Alternative.
Mein Script mapt halt noch meine Backup Freigabe auf der Qnap und legt das Backup darauf ab.
Habe es jetzt mit dem AT direkt umgesetzt.
Gruß
Michael
Zitat von: michaelapp am 06 Januar 2017, 00:11:12
Hi,
das FHEM Backup wäre natürlich eine Alternative.
Mein Script mapt halt noch meine Backup Freigabe auf der Qnap und legt das Backup darauf ab.
Habe es jetzt mit dem AT direkt umgesetzt.
Gruß
Michael
Hallo Michael,
und dazu braucht es root? :o
Und dein script kannst Du ja im
Zitatattr global backupcmd /usr/local/bin/myBackupScript.sh
genauso einbinden.
Gruß Otto
Zitat von: michaelapp am 05 Januar 2017, 23:00:18
Du meinst ich sollte noch ein:
define FHEMBackup_OFF at *22:45:00 set FHEM.Backup off
hinterlegen?
Ja, so irgendwas. Ansonsten bleibt es immer on und durch Dein "event-on-change-reading state" wird ein Event nur bei einer Änderung erzeugt.
Zitat von: Otto123 am 06 Januar 2017, 00:00:29Und einfach über FHEM backup (https://fhem.de/commandref.html#global)gehen ist wohl auch zu kompliziert.
Das würde ich auch nicht unbedingt machen, weil:
https://forum.fhem.de/index.php/topic,62102.msg535092.html#msg535092
...außer das System ist so schnell, dass es das Backup in ein paar Sekunden erledigt.
Gruß,
Thorsten
Hallo Thorsten,
danke für den Einwurf.
Da muss ich nochmal drüber nachdenken, was das wirklich bedeutet. Und wohl etwas rumprobieren.
Gruß Otto
Zitat von: Otto123 am 06 Januar 2017, 10:00:42Da muss ich nochmal drüber nachdenken, was das wirklich bedeutet.
In "meinem" Fall hat es bedeutet, dass sich beide Homematic-Schnittstellen (HM-Funk und HM-Wired) mal kurz verabschieden, da sie ihre Keepalive-Signale verspätet bekommen. D.h. die Probleme gehen sogar etwas über die reine backup-blockier-Zeit hinaus.
Gruß,
Thorsten
Hallo, dann trage ich meinen Senf auch mal dazu ;) Ich mache jede Nacht mit cp eine Sicherung auf eine externe USB hdd.
define Sicherung at *02:45:00 {system("cp -a -u -R /opt/fhem /media/usb0")}
funktioniert tadellos und gesichert werden hiermit auch nur Dateien die sich geändert haben und mittels cp dauert die Sicherung auch nur den Bruchteil einer Sekunde :)
VG
Frank
Ich kann bestätigen, dass FHEM in während der Backup-Zeit nicht unerheblich blockiert.
Bei mir sind das ca. 25 Sekunden für den Dump der dblog MySQL-DB (angestoßen aus FHEM per at) und später nochmal ca. 12 Sekunden für das FHEM-Backup mittels FHEM-eigenem backup-Command und ich habe ein relativ flottes System.
Das ganze ist bei mir bisher aber nicht so tragisch, da es eh in der Nacht passiert (irgendwann ab 1:30).
Nach dem Denkanstoß hier (Danke dafür!) werde ich das demnächst aber aus FHEM auslagern und den Cron machen zu lassen. Dazu ist der ja schließlich (u.a.) auch da ;)
Hallo,
nach einem "Unfall" meiner SD Karte habe ich mich mit dem Backup etwas näher beschäftigt.
Zum Glück hatte ich ein lokales Backup gemacht und daher war der "Zeitschaden" nicht so groß.
Zu Backup gibt es ja so einiges hier. ABER - so richtig komme ich nicht weiter.
Ich möchte das Backup täglich auf einen externen USB Stick geschrieben bekommen.
Es soll mir als Rückmeldung eine Bestätigung geben (z.B. Filename oder eben Datum)
Ich würde gerne die Größe des Backup Files sehen (im TabletUI anzeigen lassen). Aktuell habe ich täglich rund 90 MB
Ich würde gerne automatisiert ältere Backups (z.B. >7) löschen lassen.
!!!!!!!!!!!! Es soll auch das Verzeichnis log gesichert werden. Und das befindet sich selber auch auf dem USB Stick.
1. Die Beschreibung im Wiki funktioniert (natürlich)
- es wird täglich ein backup auf dem USB Stick gemacht. Leider keine Anzeige der Größe und wenn ich das Skript nehme bekomme ich im state nur ein active. Auch bekomme ich keine FileSize. Es steht zwar im log: backup daone xxx.tar.gz (fileSize) - aber ich weiss leider nicht, wie ich an diese Info für die Anzeige komme.
2. Die Beschreibung auf http://www.meintechblog.de/2015/05/fhem-howto-automatisches-backup-auf-externem-nas/ (http://www.meintechblog.de/2015/05/fhem-howto-automatisches-backup-auf-externem-nas/) ist für einen externen NAS und Qnap und mountet.
Eigentlich eine gute Basis
Hat vielleicht jemand das Backup für einen USB Stick für mich, welches eben etwas mehr "Intelligenz" bzw. Statistik hat ?
Danke
Jörg
Hallo Michael,
wenn dein FHEM auf einem RASPI läuft solltest du mal überlegen ob du nicht gleich den ganzen Raspi sicherst damit du im Falle eines Falles das komplette System wiederherstellen kannst.
http://www.linux-tips-and-tricks.de/de/raspberry/23-pi-erstellt-automatisch-backups-von-sich-selbst-pi-creates-automatic-backups-of-itself/ (http://www.linux-tips-and-tricks.de/de/raspberry/23-pi-erstellt-automatisch-backups-von-sich-selbst-pi-creates-automatic-backups-of-itself/)
Zitat von: franky08 am 06 Januar 2017, 11:37:44
define Sicherung at *02:45:00 {system("cp -a -u -R /opt/fhem /media/usb0")}
funktioniert tadellos und gesichert werden hiermit auch nur Dateien die sich geändert haben und mittels cp dauert die Sicherung auch nur den Bruchteil einer Sekunde :)
...damit schleppst Du im Backup aber auch ständig veraltete/unnütze Dateien mit, da diese von "cp -u" nicht gelöscht werden. Bessere Lösung für das Problem:
rsync -a --delete /opt/fhem/* /media/usb0/
Ich sichere mein FHEM folgendermaßen direkt unter Linux. Die Dateien werden auf mein NAS gesichert, welches auf dem Pi immer gemountet ist.
Zunächst zwei Scripte im Verzeichnis ~/bin/ erstellen
1. Script [mount.sh]:
#!/bin/sh
mount|grep nas 2>/dev/null
if [ "$?" -eq 1 ]; then
mount -t cifs -o username=hugo,password=mypassword //10.4.70.106/Harddisk/backup /mnt/nas
fi
2. Script [backup.sh]
#!/bin/bash
DATUM=$(date +%Y%m%d)
# Config und Zustand sichern
cp -f /opt/fhem/fhem.cfg /mnt/nas/fhem/fhem.cfg_${DATUM}
cp -f /opt/fhem/log/fhem.save /mnt/nas/fhem/
# FHEM komplett sichern
cd /mnt/nas/fhem
tar cvfz fhem_${DATUM}.tgz /opt/fhem/*
# Alte Dateien im Backup nach 60 Tagen loeschen
find /mnt/nas/fhem/fhem* -mtime +60 -exec rm -f {} \;
Anschließend noch die Cronjobs einrichten
* * * * * ~/bin/mount.sh
0 7 * * * ~/bin/backup.sh
FERTIG, das sieht dann in etwa so auf dem NAS aus:
root@pi2:~# ls -ltr /mnt/nas/fhem/
-rwxr-xr-x 1 root root 175830 Feb 25 07:00 fhem.save
-rwxr-xr-x 1 root root 74034 Feb 25 07:00 fhem.cfg_20170225
-rwxr-xr-x 1 root root 22944690 Feb 25 07:00 fhem_20170225.tgz
@hobu
Genau darum geht es mir ja, ich WILL die alten Datensätze ja behalten!
VG
Frank
Zitat von: franky08 am 25 Februar 2017, 23:43:39
@hobu
Genau darum geht es mir ja, ich WILL die alten Datensätze ja behalten!
Davon ging ich aus. ;)
Ich meine den ganze. alten Krams, der durch Updates liegen bleibt.
Bsp.: Ein Modul in FHEM/ bekommt eine neue Nr, alte Verzeichnisse im restoreDir, etc. pp.
Zitat von: thgorjup am 25 Februar 2017, 21:14:53
2. Script [backup.sh]
#!/bin/bash
DATUM=$(date +%Y%m%d)
# Config und Zustand sichern
cp -f /opt/fhem/fhem.cfg /mnt/nas/fhem/fhem.cfg_${DATUM}
cp -f /opt/fhem/log/fhem.save /mnt/nas/fhem/
# FHEM komplett sichern
cd /mnt/nas/fhem
tar cvfz fhem_${DATUM}.tgz /opt/fhem/*
# Alte Dateien im Backup nach 60 Tagen loeschen
find /mnt/nas/fhem/fhem* -mtime +60 -exec rm -f {} \;
Hallo,
ich habe das mal für mich eingebaut und die Angaben /mnt... entsprechend für meinen nas (FritzNAS) angepasst.
Wenn ich jede Zeile (cp -f ....) einzeln auf dem raspi ausführen, klappt es.
rufe ich das backup.sh mit sudo bash /opt/fhem/FHEM/backup.sh auf, erhalte ich
cp: reguläre Datei ,,/media/Fritz.Nas/fhem.cfg\r" kann nicht angelegt werden: Ungültiger Dateideskriptor
cp: reguläre Datei ,,/media/Fritz.Nas/\r" kann nicht angelegt werden: Ungültiger Dateideskriptor
Was habe ich da nicht beachtet ?
Danke für die Hilfe
Jörg
Hallo Jörg,
sudo bash ist an der Stelle doch Unfug? fhem kann doch die Datei backup.sh aufrufen.
Aber der User fhem hat den Mountpoint /mnt/nas/fhem/... wahrscheinlich nicht. Den hat pi nehme ich an.
Zumindest meine Meinung als Linux Anfänger. :D
Gruß Otto
Zitat von: thgorjup am 25 Februar 2017, 21:14:53
Ich sichere mein FHEM folgendermaßen direkt unter Linux. Die Dateien werden auf mein NAS gesichert, welches auf dem Pi immer gemountet ist.
Zunächst zwei Scripte im Verzeichnis ~/bin/ erstelle
Hallo, ich bin nach genau dieser Methode vogegangen und mache damit tägliche Backups auf meine NAS funktioniert super, danke!
Aber ich musste gerade feststellen das (wahrscheinlich wenn das NAS Laufwerk nicht gemountet werden kann) die Backups im Root Verzeichnis landen und so über die letzten Jahre meine SD Karte gefüllt haben. Kann man dies unterbinden?
Danke vorab!
Einfach testen ob das Verzeichnis ein Mountpoint ist.
if [[ $(findmnt -M "$FOLDER") ]]; then
echo "Mounted"
else
echo "Not mounted"
fi