FHEM HowTo – Automatisches Backup auf externem NAS
Wer laufend seine fhem.cfg verändert und dabei keine regelmäßigen Backups erstellt, läuft im Grunde ständig Gefahr die mühevoll zusammengestellte Konfiguration bei Problemen aufs Spiel zu setzen. Um diesen Umstand zu adressieren, wird nachfolgend eine Lösung vorgestellt, die sich selbstständig um regelmäßige Sicherungen von FHEM kümmert und das Backup gleich noch auf einem externen NAS speichert, um für noch mehr Sicherheit zu sorgen. Wie das funktioniert, wird in nachfolgender Anleitung Schritt für Schritt erklärt.
FHEM hat sich in den vergangen Jahren zu einer leistungsfähigen Smart-Home-Lösung entwickelt, die mittlerweile von einer großen Anzahl von Anwendern genutzt wird, die den Aufbau Ihres Connected Home selbst in die Hand nehmen möchten. Die Möglichkeiten verschiedenste Standards unter einem Dach zu vereinen, sind bereits vielfältig und entwickeln sich durch die lebendige Community täglich weiter. Jedoch gilt es erst einmal einige Hürden zu überwinden, um mit dem System dauerhaft glücklich zu sein.
Der (steinige) Weg zum zuverlässigen Dauerbetrieb
Als Hilfestellung bei der Ersteinrichtung von FHEM wurde auf den Tag genau vor zwei Jahren das HowTo FHEM-Server auf dem Raspberry Pi in einer Stunde einrichten veröffentlicht, das bereits vielen den Einstieg in die FHEM-Welt ermöglicht hat und mit monatlich im Schnitt über 10.000 Aufrufen seither unser erfolgreichste Blogpost ist.
Ist FHEM einmal installiert, ist gerade zu Beginn der Drang groß, eine Vielzahl von Gerätschaften anzulernen und die fhem.cfg mit eigenem Code zu füttern. Nicht nur beim wilden Herumprobieren und Austesten der Möglichkeiten kann es aber auch einmal vorkommen, dass das System plötzlich den Dienst verweigert, nicht mehr erreichbar ist und im schlimmsten Fall alle Daten im Nirvana landen. Um sich davor wirkungsvoll zu schützen, gilt es in regelmäßigen Abständen ein Backup des gesamten Systems zu erstellen, um im Fall der Fälle alle Informationen wieder zurückspielen zu können.
Das funktioniert “eigentlich” bereits mit der in FHEM integrierten Backupfunktion, welche im Blogpost FHEM-Server updaten beschrieben wird. “Eigentlich” deshalb, weil dabei die “fhem.cfg”und damit die wichtigste Datei überhaupt nur mit 0 Byte gesichert wird. Wie es mit etwas manuellem Einrichtungsaufwand dennoch klappt und wie das gesicherte Backup im selben Atemzug gleich noch auf einem im Netzwerk erreichbaren NAS gesichert werden kann, wird im Anschluss Schritt für Schritt erklärt.
Die Voraussetzungen für externe Backups
Nachfolgende Anleitung funktioniert reibungsfrei mit einer FHEM-Installation auf einem RPI (Affiliate-Link) und unter Ubuntu. Das lokal erstellte Backup landet dabei auf einem externen NAS, welches per CIFS gemountet wird. Das funktioniert gewöhnlich mit jedem NAS von QNAP (Affiliate-Link) und Synology (Affiliate-Link) standardmäßig und ohne jegliche Modifikation. Grundsätzlich sind natürlich auch andere Kombinationen und Freigabemethoden möglich, hier müssen dann aber evtl. Anpassungen an der nachfolgenden Anleitung vorgenommen werden. Vorab: Ich habe viel getestet und die nachfolgende Methode hat sich bei mir bisher als Einzige bewährt.
FHEM-Benutzer-Berechtigungen ändern
Für die Erstellung und den Transfer des zu erstellenden FHEM-Backups wird ein kleines bash-Script namens backup.sh genutzt, welches in FHEM eingebunden wird und später auch darüber getriggert werden kann, um automatische und manuelle Backups anzustoßen. Damit aus FHEM heraus bash-Befehle mit der notwendigen Berechtigung ausgeführt werden können, muss jedoch erst einmal die Datei “/etc/sudoers” auf dem RPI bzw. unter Ubuntu angepasst werden.
Zu diesem Zweck erfolgt ein ssh-Login auf der FHEM-Installation per Terminal. An dieser Stelle muss natürlich jeder die IP-Adresse und den Benutzernamen (sofern notwendig) anpassen.
ssh pi@192.168.3.97
Als nächstes wird die Datei “/etc/sudoers” bearbeitet. Dies geschieht am besten nicht mit dem “nano”-Editor per “sudo nano /etc/sudoers”, sondern über “visudo”, da hier ein Prüfmechanismus eingebaut ist (Danke an Christian für den Hinweis):
sudo visudo
Hier sucht man die Zeilen mit dem Inhalt:
# User privilege specification
%sudo ALL=(ALL:ALL) ALL
(unter Ubuntu lautet die Zeile: root ALL=(ALL:ALL) ALL)
und ergänzt direkt darunter den Inhalt:
fhem ALL=(ALL) NOPASSWD: ALL
Mit ctrl+o und Enter werden die Änderungen gespeichert und mit ctrl+x wird der Editor wieder verlassen.
Auf einem RPI sieht das Ganze dann so aus:
Unter Ubuntu so:
Update vom 02.06.2015: Wer dem fhem-User aus Sicherheitsgründen nur eigeschränkte Berechtigung geben möchte, nutzt stattdessen “fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh”. Danke an Ronny für den Hinweis. Update Ende
Mit dieser Anpassung erhält der fhem-Benutzer nun die notwendige Berechtigung, die später benötigt wird, um aus FHEM heraus bash-Befehle auszuführen.
Damit die Änderungen aktiv werden, sollte ein Neustart ausgeführt werden.
sudo reboot
Danach geht es nach erneutem ssh-Login im Terminal weiter…
Notwendiges Package “cifs-utils” installieren
Damit die künftig erstellten Backups per cifs-Freigabe auf dem NAS landen, muss das Paket “cifs-utils” auf dem FHEM-Server installiert werden, sofern es dort noch nicht vorhanden ist. Damit das auch dann klappt, wenn sich das System eventuell etwas dagegen sträubt, wird folgender Code genutzt:
sudo apt-get update && sudo dpkg --configure -a && sudo apt-get -f install && sudo apt-get -y install cifs-utils curl libcurl3
Backup-Script backup.sh erstellen
Nun wird die später genutzte Datei namens “backup.sh” erzeugt und mit den notwendigen Berechtigungen zum Ausführen ausgestattet. Unter Ubuntu kann der letzte Teil ab “&& sudo chown -R fhem:root /opt/fhem/FHEM/backup.sh” einfach weggelassen werden.
sudo touch /opt/fhem/FHEM/backup.sh && sudo chmod 700 /opt/fhem/FHEM/backup.sh && sudo chown -R fhem:root /opt/fhem/FHEM/backup.sh
Jetzt geht es in FHEM Oberfläche, in welcher die Datei mit dem notwendigen Backup-Code gefüttert wird. Dazu wird das Terminal verlassen und der Webbrowser zur Hand genommen. Die IP muss natürlich jeder selbst anpassen:
http://192.168.3.97:8083/fhem?cmd=style%20edit%20backup.sh
Nun wird der nachfolgende Backup-Code per Copy&Paste in den FHEM-Editor eingefügt:
#!/bin/bash mountIp="192.168.3.10" mountDir="backup" mountUser="admin" mountPass="password" mountSubDir="rpi/fhem" localMountPoint="/Q/backup" #optional backupsMax="0" localBackupDir="/backup" pushoverUser="" pushoverToken="" ################################### perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info backup starting now" if [ ! -e "$localBackupDir" ] then echo "$localBackupDir wird erstellt" mkdir -p "$localBackupDir" else echo "$localBackupDir bereits vorhanden" fi tar --exclude=backup -cvzf "/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz" "/opt/fhem" &>/dev/null if ! ping -c 1 $mountIp then echo "$mountIp nicht erreichbar, stop" perl /opt/fhem/fhem.pl 7072 "set FHEM.Backup error" perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info $mountIp not found" exit else echo "$mountIp erreichbar" fi localIp=$(hostname -I|sed 's/\([0-9.]*\).*/\1/') if [ ! -e "$localMountPoint" ] then echo "$localMountPoint wird erstellt" mkdir -p "$localMountPoint" else echo "$localMountPoint bereits vorhanden" fi if [ "$(ls -A $localMountPoint)" ] then echo "$localMountPoint nicht leer, kein Mounten notwendig" else echo "$localMountPoint leer, Mounten starten" vorhanden="0" while read line do mountComplete="//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0" echo "mountComplete: $mountComplete" if [ `echo "$line" | grep -c "$mountComplete"` != 0 ] then echo "/etc/fstab: Eintrag bereits vorhanden: $mountComplete" vorhanden="1" break fi done < "/etc/fstab" if [ "$vorhanden" != "1" ] then echo "/etc/fstab: Eintrag wird ergänzt: $mountComplete" echo "$mountComplete" >> "/etc/fstab" fi echo "Mounts werden aktualisiert" mount -a sleep 3 fi if [ "$(ls -A $localMountPoint)" ] then if [ ! -e "$localMountPoint/$mountSubDir/$localIp" ] then mkdir -p "$localMountPoint/$mountSubDir/$localIp" else echo "$localMountPoint/$mountSubDir/$localIp existiert bereits" fi find "$localBackupDir" -name '*fhem_backup.tar.gz' | while read file do fileSize="0" fileSizeMB=$(du -h $file) fileSizeMB=${fileSizeMB%%M*} filename=${file##*/} echo "$filename ($fileSizeMB MB) wird in den Backupordner verschoben" if [[ "$pushoverToken" != "" && "pushoverUser" != "" ]] then curl -s -F "token=$pushoverToken" -F "user=$pushoverUser" -F "title=FHEM $localIp" -F "message=Backup mit $fileSizeMB MB wird erstellt" https://api.pushover.net/1/messages.json fi #mv "$file" "$localMountPoint/$mountSubDir/$localIp/$filename" cp "$file" "$localMountPoint/$mountSubDir/$localIp/$filename" rm "$file" perl /opt/fhem/fhem.pl 7072 "set FHEM.Backup off" perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backup $filename" perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupMB $fileSizeMB" perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info backup done" done else echo "Mounten hat anscheinend nicht geklappt, skip." exit fi #Löschen alter Backups if [[ "$backupsMax" != "" && "$backupsMax" != "0" ]] then perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupFilesMax $backupsMax" backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_fhem_backup.tar.gz"` backupsDelete=$(($backupsCurrent-$backupsMax)) if [ "$backupsDelete" -gt "0" ] then echo "$backupsCurrent Backups vorhanden - nur $backupsMax aktuelle Backups werden vorgehalten - $backupsDelete Backups werden gelöscht" ls -d "/$localMountPoint/$mountSubDir/$localIp/"* | grep "_fhem_backup.tar.gz" | head -$backupsDelete | xargs rm else echo "$backupsCurrent Backups vorhanden - bis $backupsMax aktuelle Backups werden vorgehalten" fi else perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupFilesMax no limit" fi backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_fhem_backup.tar.gz"` perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupFiles $backupsCurrent" echo "Mount wieder unmounten" umount "$localMountPoint"
Dabei muss jeder die Werte am Anfang des Scripts:
mountIp=”192.168.3.10″
mountUser=”admin”
mountPass=”password”
mountDir=”backup”
mountSubDir=”rpi/fhem”
mit den Login-Daten des eigenen NAS anpassen. In diesem Beispiel wird vorausgesetzt, dass eine Freigabe namens “backup” auf dem NAS zur Verfügung steht, welche vom Benutzer “admin” per cifs (Windows Freigabe) zugegriffen werden kann.
Der Eintrag:
localMountPoint=”/Q/backup”
ist das lokale Verzeichnis auf dem FHEM-System, welche auf die NAS-Freigabe verlinkt.
Wer eine Benachrichtigung per Pushover möchte, trägt seinen privaten Pushover-Benutzer und -Token einfach in den optionalen Parametern ein.
Sind alle Anpassungen an der Datei “backup.sh” vorgenommen, kann diese in FHEM mit dem Button “Save backup.sh” (links oben) abgespeichert werden.
fhem.cfg anpassen
Zum Schluss wird noch ein kurzer Code in die fhem.cfg eingetragen, damit über den Dummy namens “FHEM.Backup” die Erstellung des Backups manuell über das FHEM-Interface gestartet werden kann.
Die letzte Zeile bewirkt dann schließlich, dass jeden morgen um sechs Uhr automatisch ein Backup angestoßen wird.
#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 06:00 Uhr starten define FHEMBackup at *06:00:00 set FHEM.Backup on
Durch die letzten Codezeilen des backup.sh-Scripts erhält der Dummy “FHEM.Backup” neben einem Statusupdate auch gleich noch einige Readings verpasst. Dazu gehören die Readings “filename”, welches Auskunft über den erzeugten Backup-Dateinamen gibt und “backupMB”, das die Größe des erzeugten Backups in MB ausgibt.
Ist die “fhem.cfg” angepasst, ist ein Neustart von FHEM sinnvoll, der über den FHEM-Kommandozeilenbefehl “shutdown restart” (ohne Anführungszeichen) ausgeführt werden kann. FHEM ist dann nach einigen Sekunden wieder erreichbar.
Ab sofort sollten neue Backups automatisch auf dem gemounteten NAS landen, sobald der Dummy getriggert wird (entweder manuell oder aufgrund der täglichen Ausführung um 06:00 Uhr morgens). Bei obiger Konfiguration landen die Backupdateien dann im QNAP-Ordner “/Backup/rpi/fhem/192.168.3.97/”.
Wer Probleme hat und den Backup-Befehl manuell testen möchte, kann dies über nachfolgenden Terminalbefehl auf dem eingeloggten FHEM-Server:
sudo /opt/fhem/FHEM/backup.sh
Hier werden dann auch etwaige Status- bzw. Fehlermeldungen direkt vom Script in der Terminalzeile ausgegeben.
Update vom 27.01.1016: Da Felix berechtigterweise gefragt hat, wie er sein Backup wieder zurückspielen kann, werden die dafür notwendigen Schritte nachfolgend ergänzt:
Backup zurückspielen
Sofern man das erstellte Backup zurückspielen möchte, wird erneut ein Grundsystem auf dem RPI inkl. FHEM installiert, wie im Artikel FHEM-Server auf dem Raspberry Pi in einer Stunde einrichten erläutert.
Im Anschluss müssen wieder alle notwendigen Pakete, die bisher installiert wurden, per Terminal auf dem nun neuen System nachinstalliert werden. Also am besten direkt immer alles dokumentieren, was zusätzlich per Terminal installiert wird.
FHEM wird dann per Terminalbefehl gestoppt:
sudo service fhem stop
Dann wird das das Backupfile (hier: 160126_060205_fhem_backup.tar.gz) auf den RPI übertragen, z.B. in den Ordner “/tmp”. Das funktioniert recht einfach bspw. per Filezilla, wobei die Verbindungsmethode SFTP (mit den SSH-Logindaten) für die Anmeldung genutzt werden kann.
Der Terminalbefehl für das Zurücksetzen (Entpacken der Backups) lautet dann:
sudo tar -xvzf /tmp/160126_060205_fhem_backup.tar.gz -C /
Sofern es keine Fehler gab, kann das System durch ein abschließendes
sudo restart
neugestartet werden.
Aus meinem täglichen Leben
Gerade wenn man mit dem Terminal noch nicht so vertraut ist, gestaltet sich die oben beschriebene Vorgehensweise eventuell als etwas frickelig, einmal ordnungsgemäß eingerichtet, sollte man damit aber keine Probleme mehr haben. Dann wird immer automatisch ein brauchbares Backup der FHEM-Installation erstellt, welches im Bedarfsfall zurückgespielt werden kann, wie es im Artikel FHEM-Server updaten beschrieben wird. Auch zeigt die Vorgehensweise recht anschaulich, wie man über FHEM eigene bash-Scripte ausführen kann und aus dem Script heraus Parameter (state, readings) mit den entsprechenden Befehlen (z.B. perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”) zurück in FHEM schreiben kann. Dadurch eröffnen sich noch mehr Möglichkeiten, um eigene Ideen umsetzen zu können und das Smart Home noch ein Stückchen schlauer zu machen.
Wer beitragen kann obigen Code zu verbessern, darf seine Vorschläge gerne per Kommentar mitteilen. Mein Coding hat sich zwar die letzten Monate wieder etwas verbessert, perfekt ist es aber noch lange nicht.
314 Kommentare
Hallo Jörg,
das ist eine Super Anleitung, die du uns hier zur Verfügung gestellt hast.
Ich werde mal versuchen diese auf meinem Cubietruck umzusetzen.
Sobald ich weitere Fragen habe, melde ich mich dann…
Danke
Hoffe es klappt bei dir gleich auf Anhieb.
Über eine Rückmeldung würde ich mich sehr freuen.
Grüße
Jörg
PS: Ich hab den Code in der Zwischenzeit noch etwas angepasst, damit das Script automatisch stoppt sofern das NAS einmal nicht erreichbar ist.
Hab den Code nochmal etwas angepasst und die Reihenfolge einiger Abfragen angepasst, so dass das Script jetzt neue Sicherungen im lokalen Backup-Verzeichnis /backup auch dann erzeugt, wenn das NAS nicht im Netzwerk erreichbar ist (z.B. ausgeschaltet) und dann beim nächsten Backup-Durchlauf alle noch nicht übertragenen Sicherungen “nachträglich” mit auf das NAS schiebt, sobald es wieder erreichbar ist.
Denke ich werde dem Dummy FHEM.Backup dann noch ein entsprechendes Reading verpassen, so dass man direkt in FHEM kontrollieren kann, ob die Sicherung auf das NAS übertragen werden konnte oder nicht.
Done… Das Reading “info” gibt jetzt Auskunft darüber, ob das Script gestartet wurde (“backup starting now”), ob das NAS unerreichbar ist (“192.168.3.10 not found”) und ob alles ordnungsgemäß durchgelaufen ist (“backup done”). Wenn das NAS nicht erreichbar ist, erhält der Dummy “FHEM.Backup” zudem den Wert “error” verpasst.
Hallo Jörg,
meine FHEM Backups enthalten sowohl eine 0 Byte große ./fhem.cfg als auch eine ‘normal große’ fhem.cfg.
Gruß,
Stefan
Hi Stefan,
je nach System-“Untergrund” funktioniert es bei mir auch, jedoch hatte ich gerade auf einem RPI mit wheezy laufend das Problem, dass die in FHEM integrierte Backup-Funktion die fhem.cfg-Datei nicht zuverlässig gesichert hatte, was ich leider erst gemerkt hatte, als ich auf das Backup angewiesen war.
Nach kurzem Fluchen habe ich dann die hier vorgestellte Vorgehensweise erarbeitet, die bis jetzt auf jedem meiner Systeme – auch unter wheezy – bestens funktioniert.
Grüße
Jörg
Hi Jörg, sehr cool, ich arbeite gerade die Anleitung ab.. dabei fiel mir auf, dass bei meinem FHEM auf einem Cubie die .sh Datei erst gespeichert werden konnte, nachdem ich
sudo chown -R fhem:root /opt/fhem/FHEM/backup.sh
ausgeführt hatte.
Ich habe die Berechtigungen in Linux noch nicht wirklich verinnerlicht, glaube aber, dass man fhem ALL=(ALL) NOPASSWD: ALL eventuell noch auf das tatsächlich Auszuführende begrenzen sollte, oder nicht?
Gruß
Ronny
Hi Ronny,
danke für die Rückmeldung. Ich habe leider keinen Cubietruck zum Testen, werde mein Howto aber gleich mal mit einem “frischen” RPI-Image testen und sehen, ob ich auf die das selbe Problem stoße.
Mit Berechtigungen in Linux habe ich mich ehrlich gesagt auch noch nicht wirklich im Detail auseinandergesetzt. War erstmal froh, dass es mit dem Code lauffähig war. Hast du einen Vorschlag, wie man das “tatsächlich Auszuführende” sinnvoll begrenzen sollte?
Grüße
Jörg
Hey Jörg,
bei mir funktioniert es jetzt einwandfrei mit:
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh
Dadurch sollte der fhem User nur das Script ausführen dürfen.
Einzig, dass der Log jetzt etwas zugemüllt wird, ist noch ein kleiner Schönheitsfehler. Zumindest bei mir werden dort hunderte von fhem Dateien aufgelistet – also alles, was die Konsole sonst anzeigt.
Zu meiner letzten Satz: Ich experimentiere gerade mit
tar -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null
Scheinbar funktioniert das – es werden die Dateien nicht mehr aufgelistet im Log. Für mich nun ideal, auch durch deine neue Löschmöglichkeit!
&>/dev/null
funzt bei mir auch !!! sieht nun wieder schick aus – Danke
Danke Ronny,
habe die Infos im Blogpost ergänzt.
Ich weiß nicht, ob es am Cubietruck liegt – ich stolpere über mehrere Fehlermeldungen.
Ich habe ein QNAP NAS samt Freigabe Backup für den User backup. Die Unterverzeichnisse Cubie/fhem habe ich erstellt.
Hast du evtl. eine Idee?
~$ sudo /opt/fhem/FHEM/backup.sh
E: dpkg was interrupted, you must manually run ‘sudo dpkg –configure -a’ to correct the problem.
curl: (7) couldn’t connect to host
NAS erreichbar
cut: the delimiter must be a single character
Try `cut –help’ for more information.
/backup bereits vorhanden
tar: Removing leading `/’ from member names
/opt/fhem/
/opt/fhem/demolog/
/opt/fhem/demolog/garden.log
/opt/fhem/demolog/LightScenes.save
/opt/fhem/demolog/layout
/opt/fhem/demolog/pictures-copyright.txt
/opt/fhem/demolog/eventTypes.txt
/opt/fhem/demolog/fhem.save
/opt/fhem/demolog/predicted.log
/opt/fhem/demolog/LightScenes.dd.save
/opt/fhem/demolog/cellar.log
/opt/fhem/demolog/dewpoint.log
/opt/fhem/backup/
….
/opt/fhem/contrib/ks300avg.pl
/opt/fhem/contrib/97_GROUP.pm
/opt/fhem/configDB.pm
/Q/backup wird erstellt
/Q/backup leer, Mounten starten
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=*************,iocharset=utf8,sec=ntlm 0 0
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=*************,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag wird ergänzt: //NAS/Backup /Q/backup cifs username=backup,password=**************,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount: wrong fs type, bad option, bad superblock on //NAS/Backup,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
In some cases useful info is found in syslog – try
dmesg | tail or so
Mounten hat anscheinend nicht geklappt, skip.
So,
habe den Blogpost dank deines Hinweises mit der Berechtigung “sudo chown -R fhem:root /opt/fhem/FHEM/backup.sh” angepasst. Vielen Dank nochmal! Auch habe ich den Code der “backup.sh” modifiziert, so dass die Fehlermeldungen hoffentlich auch bei dir verschwinden sollten. Im Detail habe ich noch die Zeile “sudo dpkg –configure -a” eingefügt, da im deinem Fall wohl das notwendige Package “cifs-utils” nicht installiert werden konnte, die Abfrage verändert, ob das NAS im Netzwerk erreichbar ist “if ! ping -c 1 $mountIp” und die Ermittlung der eigenen IP-Adresse “localIp=$(ip a s|sed -ne ‘/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}’)”.
Grüße und viel Erfolg damit
Jörg
Hey Jörg, danke für die schnelle Anpassung des Scripts – ich habe es gleich getestet. Irgendwo hakt es leider immer noch – kannst du da etwas erkennen?
Evtl. hat moonsorrox das Script auf seinem Cubietruck schon getestet?
~$ sudo /opt/fhem/FHEM/backup.sh
dpkg: dependency problems prevent configuration of locales:
locales depends on libc-bin (>> 2.19); however:
Version of libc-bin on system is 2.13-38+deb7u8.
dpkg: error processing locales (–configure):
dependency problems – leaving unconfigured
Errors were encountered while processing:
locales
Reading package lists… Done
Building dependency tree
Reading state information… Done
You might want to run ‘apt-get -f install’ to correct these:
The following packages have unmet dependencies:
cifs-utils : Depends: libwbclient0 (>= 2:4.0.3+dfsg1) but 2:3.6.6-6+deb7u5 is to be installed
locales : Depends: libc-bin (> 2.19) but 2.13-38+deb7u8 is to be installed
E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).
/backup bereits vorhanden
tar: Removing leading `/’ from member names
/opt/fhem/
/opt/fhem/demolog/
…
/opt/fhem/contrib/97_GROUP.pm
/opt/fhem/configDB.pm
PING NAS.fritz.box (192.168.2.2) 56(84) bytes of data.
64 bytes from NAS.fritz.box (192.168.2.2): icmp_req=1 ttl=64 time=5.02 ms
— NAS.fritz.box ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.024/5.024/5.024/0.000 ms
NAS erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount: wrong fs type, bad option, bad superblock on //NAS/Backup,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
In some cases useful info is found in syslog – try
dmesg | tail or so
Mounten hat anscheinend nicht geklappt, skip.
OK, ich habe mal das gemacht, was in der Konsole empfohlen wird:
apt-get -f install
Der erste Scriptstart danach hat dann zwar ein wenig gedauert, aber es tauchen nun keine Fehlermeldungen mehr auf!
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //NAS/Backup /Q/backup cifs username=backup,password=****,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
150531_185720_fhem_backup.tar.gz (215 MB) wird in den Backupordner verschoben
150531_185351_fhem_backup.tar.gz (215 MB) wird in den Backupordner verschoben
150531_211556_fhem_backup.tar.gz (215 MB) wird in den Backupordner verschoben
Q ist (scheinbar) korrekt gemountet. Allerdings wird der Inhalt auf dem NAS nicht erstellt, d.h. der Ordner ist leer.
Ich hoffe, ich spamme den guten Beitrag nicht all zu sehr zu…
In der Konsole kann ich erkennen, dass in dem gemounteten Q die Files liegen:
/Q/backup/cubie/fhem/192.168.2.10$ ls
150531_185351_fhem_backup.tar.gz 150531_205905_fhem_backup.tar.gz
150531_185720_fhem_backup.tar.gz 150531_211556_fhem_backup.tar.gz
150531_203518_fhem_backup.tar.gz
Da wird also eine IP verwendet. Diese wird mir im Windows Explorer allerdings nicht angezeigt. Wenn ich die direkt per Adresseingabe aufrufe, erscheinen die Backups.
Also an sich funktioniert dann alles wunderbar! Aber aus welchem Grund wird das weitere Unterverzeichnis ($localIp) angelegt?
Danke nochmal, Jörg, dass du hier allen dein Script zur Verfügung stellst!
Hi Ronny,
ich habe den Blogpost nochmals angepasst und die notwendigen Schritte aus dem eigentlichen Script in den vorgelagerten Gliederungspunkt “Notwendiges Package “cifs-utils” installieren” ausgegliedert und entsprechend erweitert, so dass es universell (Ubuntu, RPI, Cubie) funktionieren sollte.
Ich sichere mehrere FHEM-Server und durch “$localIp” landen die Sicherungen automatisch in separaten Unterordnern entsprechend den zugewiesenen IP-Adressen der FHEM-Server, was dann für Übersichtlichkeit sorgt.
Wenn der Unterordner in deinem Fall nicht im Explorer angezeigt wird, liegt das evtl. an fehlenden Zugriffsrechten. Ich bin echt nicht der Zugriffsrechts-Profi und Linux-Experten werden sicherlich jaulend aufschreien, aber mit
sudo chmod 777 -R /Q/backup/cubie/fhem
sollte der Ordner auftauchen, da mit dem Befehl einfach jeder User Zugriff auf den Ordner und dessen Unterordner erhält.
Grüße
Jörg
PS: Freut mich, dass es nach einigen Startschwierigkeiten jetzt auch bei dir klappt! Von deinem Input profitieren sicher auch andere Anwender!
Hi @all,
Das sieht richtig gut aus *freu ,werde ich die Tage einbauen und testen 🙂 danke !
Wenn ich es richtig verstanden habe ,so sichert das Script täglich , das würde heißen es werden mitunter recht viele Sicherungen !
Gibt es eine Möglichkeit ,eine Anzahl an Sicherungen im Script zu hinterlegen , z.b. 14 und dann wird ab der 15. Sicherung einfach die erste überschrieben ?
So wäre das Fileaufkommen auf dem NAS kalkulierbarer ….
Hi Aladin,
das hast du richtig verstanden. Dein Vorschlag mit dem Vorhalten nur einer bestimmten Anzahl aktueller Backups hat mir gut gefallen, so dass ich ihn spontan mal umgesetzt habe. In obigem Code kann nun der Parameter
BackupsMax=”0″
angepasst werden. Wenn der Wert bspw. auf 10 gesetzt wird, werden automatisch alte Backups gelöscht, sofern im Ordner mehr als 10 Backup-Dateien vorhanden sind. Verbleibt der Wert auf 0 oder wird nicht gesetzt (BackupsMax=””), werden weiterhin beliebig viele Backups archiviert.
Wer den Code selbst anpassen möchte, sollte äußerst vorsichtig damit umgehen, da gerade bei automatisierten Löschvorgängen jede Menge schief gehen kann und man im schlimmsten Fall alle Daten röstet. Da spreche ich aus eigener Erfahrung… 😉
Grüße
Jörg
@Jörg ,
perfekt ! Vielen Dank 🙂
Danke Jörg……..funktioniert perfekt auf meiner Zbox mit Ubuntu und einem Synology Nas!
LG
Bäääm. Danke für die Rückmeldung. 🙂
@Aladin212
Auf einem Synology Nas kann mann im Aufgabenplaner folgendes Skript anlegen, welches dann Datein automatisch löscht, die älter als 7 Tage sind.
find /PFAD/ZUM/VERZEICHNIS -atime +7 -type f -delete
wobei -attime +7 für Dateien die älter sind als 7 Tage steht!
Das ganze sollte sich bei Qnap auch umsetzen lassen………
Vie Erfolg
LG
@Marco, danke für Deine Antwort !
Aufgabenplaner ? Im NAS ? Bei Knapp ist das ,glaub ich , die Crontab – wobei ich die noch nicht bearbeitet habe ….
Aber ich versuche es mal in dieser Richtung , Danke !
Hallo,
der Befehl
mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
erzeugt eine Fehlermeldung obwohl die Dateien verschoben werden, da mv versucht die Berechtigungen aus der Quelle zu setzen und das auf dem NAS nicht funktioniert.
ich habe das etwas umgeschrieben:
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename” && rm “$file”
damit läuft das script fehlerfrei durch.
Danke für den Hinweis. Denke deine Anpassung ist sinnvoll, habe obiges Script deshalb entsprechend angepasst.
Grüße
Jörg
Also mein FHEM backup heißt git.
Man sollte natürlich ein externes repository haben und regelmäßiges commit und push nicht vergessen.
So , ich habe nun mal versucht einzubauen – sorry bekomme ich aber nicht hin 🙁
Wenn er das automatische Backup ausführt bekomme ich im Logfile :
sudo: no tty present and no askpass program specified
2015.06.01 16:42:03 3: FHEMBackupOn return value: -1
Vielen Dank für die super Anleitung. Das Backup läuft bei mir, aber die Datei landet nicht auf meinem NAS (Synology) und ich finde sie auch auf dem RPI im backup-Verzeichnis nicht wieder. Wo könnte der Fehler liegen?
Im logfile in FHEM steht:
PING 192.168.178.37 (192.168.178.37) 56(84) bytes of data.
64 bytes from 192.168.178.37: icmp_req=1 ttl=64 time=1.93 ms
— 192.168.178.37 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.938/1.938/1.938/0.000 ms
192.168.178.37 erreichbar
/Q/backup wird erstellt
/Q/backup leer, Mounten starten
mountComplete: //192.168.178.37/backup /Q/backup cifs username=admin,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.37/backup /Q/backup cifs username=admin,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.37/backup /Q/backup cifs username=admin,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.37/backup /Q/backup cifs username=admin,password=*****,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag wird ergänzt: //192.168.178.37/backup /Q/backup cifs
username=admin,password=*****,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
Mounten hat anscheinend nicht geklappt, skip.
Herzlichen Dank für jede Hilfe
Martin
Hey Martin,
mit ziemlicher Sicherheit liegt es an dem fehlenden oder falschen sudoers Eintrag. Schau mal oben.
Sorry, mein Kommentar galt Aladin212s Problem.
Danke , hatte es zwar richtig in die sudoers eingetragen , aber ich Depp hab keinen Neustart gemacht 🙂
Im Log das :
sudo: no tty present and no askpass program specified
ist nun weg 🙂
Danke für den Hinweis mit dem Neustart. Dieser war bei mir zwar nicht notwendig (Ubuntu), hab es im Blogpost aber mal vermerkt, kann ja nicht schaden.
Hallo Dabblo_LH,
leg mal eine datei oder einen Ordner in dem Verzeichnis welches gemountet wird.
hatte am Anfang auch das Problem, solang der Ordner leer war, wurde kein backup durchgeführt.
Das Problem hatte ich auch !
Es musste etwas im Ordner sein , danke für diesen Tip !!!
Ok komisch,
ich hatte das Problem nicht. Weiss spontan leider auch nicht wirklich, wie man das Problem gleich im Kern ersticken könnte, da es bei mir nicht auftritt.. Bin für jeden Hinweis dankbar, um den Code überarbeiten zu können.
Grüße
Jörg
@all
Hat mich einiges an Zeit mit vielen Fehlversuchen gekostet bis ich hier runter gelesen hatte.
Nachdem ich eine Datei in das Verzeichnis gelegt hatte funktionierte es einwandfrei. Wieso das so ist habe ich noch nicht herausgefunden.
Danke für den Tip Aladin212.
Ich sichere FHEM auf RPI2 nach Synology 211j.
Hallo Jörg,
was mir noch aufgefallen ist:
sudo apt-get update && sudo dpkg –configure -a && apt-get -f install && sudo apt-get -y install cifs-utils
fehlt nach dem zweiten && nicht ein sudo ?
sudo apt-get update && sudo dpkg –configure -a && sudo apt-get -f install && sudo apt-get -y install cifs-utils
musste das bei mir mit einbauen sonst kam beim installieren ein Fehler.
hab dann jeden Befehl einzeln ausgeführt bis ich drauf kam …
Da hast du recht, danke für den Hinweis. Habe ich gerade berichtigt…
Hallo Jörg,
super! Aber:
– ich möchte nicht in das backup.sh das admin-Passwort meines NAS reinschreiben, daher habe ich einen extra Nutzer auf meinem Synology-NAS angelegt, der sonst keine Rechte hat
– das manuelle testen auf meinem Raspberry geht mit “sudo sh backup.sh”
– es kommt nach dem Anlegen des Eintrags in /etc/fstab eine Fehlermeldung, da das “-e” bei mir mit in der fstab landete, dort sah die neue Zeile so aus: “-e //192.168. …”; nach dem manuellen Entfernen des “-e ” ging das mounten problemlos
– die Backup-Files werden korrekt vom Raspi auf das NAS kopiert, aber es kommen noch zwei Fehlermeldungen “[[: not found”:
—
150602_003627_fhem_backup.tar.gz (667 MB) wird in den Backupordner verschoben
backup.sh: 91: backup.sh: [[: not found
backup.sh: 109: backup.sh: [[: not found
uff … 667 MB ?
Das ist aber heftig groß ! Du sicherst damit nur Fhem ?
gruß
Aladin212
Ja, ich habe auch bislang schon fhem per “backup” lokal gesichert. Nun hat das neue Script auch diese lokalen backups der letzten zwei Monate mit eingepackt. Ist ja gut, nun liegt alles sicher auf dem NAS und ich kann den Speicher des Raspi wieder freigeben.
Guter Hinweis, den ich in obigem Code jetzt auch umgesetzt habe.
Man kann recht einfach nicht benötigte Verzeichnisse und Dateien ausklammern, die dann nicht gesichert werden.
Bspw. kann man so das FHEM-interne Backupverzeichnis “/opt/fhem/backup” weglassen.
Die Zeile
tar -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem”
lautet dann
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem”
Wer noch mehr Verzeichnisse ausklammern möchte, kann dies einfach weiterführen, also z.B.
tar –exclude=backup –exclude=demolog –exclude=log -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem”
Grüße
Jörg
Hi Hermann,
danke für die Hinweise.
Den “Fehler” mit der /etc/fstab hatte ich nicht, habe den Code aber mal angepasst (-e entfernt, da man den Parameter eigentlich gar nicht benötigt), so dass es jetzt besser klappen sollte.
Dein Problem mit “[[: not found” kann ich leider nicht ganz nachvollziehen, anscheinend wird die Syntax der beiden betreffenden if-Abfragen nicht korrekt erkannt. Wie man das Problem löst, weiss ich spontan leider nicht, da es bei mir klappt und eigentlich auch so passen sollte. Da fehlt mir wohl das notwendige Hintergrundwissen.
Welches System bzw. Plattform setzt du eigentlich als FHEM-Server ein?
Grüße
Jörg
Ich habe fhem auf dem Raspi 2 am Laufen (habe auch eine Kopie von fhem direkt auf dem Synology NAS, aber das tut hier nichts zur Sache und dient mir eher zum Testen).
Ok, nutzt du dann auch Wheezy, wie es im Blogpost FHEM-Server auf dem Raspberry Pi in einer Stunde einrichten beschreiben ist oder verwendest du eine andere Sofwarebasis?
Ja, wheezy. Habe es zwar damals nicht nach dieser Anleitung installiert, aber doch sehr ähnlich.
Ich habe auch noch das Problem, dass die Readings von FHEM.Backup nicht gesetzt werden. Das Backup lief heute morgen um 6:00 problemlos durch. Das Reading steht auf “on” mit Zeitstempel 6:00, sonst kein Eintrag.
Kurze Rückmeldung von mir, ich habe das Script getestet und es hat alles funktioniert.
Hier mal die Meldungen die ich bekommen habe.
root@cubie:~# /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 10.0.0.44 (10.0.0.44) 56(84) bytes of data.
64 bytes from 10.0.0.44: icmp_req=1 ttl=64 time=0.206 ms
— 10.0.0.44 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.206/0.206/0.206/0.000 ms
10.0.0.44 erreichbar
/Q/Sicherung bereits vorhanden
/Q/Sicherung nicht leer, kein Mounten notwendig
/Q/Sicherung/BackupFHEM_IP52/opt/fhem/10.0.0.52 existiert bereits
150602_143804_fhem_backup.tar.gz (115 MB) wird in den Backupordner verschoben
Mein System war ein Testsystem mit Debian wheezy.
Ich setze grad ein neues auf mit jessie und werde es dann noch einmal probieren.
Was bei mir nicht funktionierte war ein Update über Fhem, ich habe es nur auf der Terminal Ebene manuell gemacht.
1x hatte ich ein Update gemacht da hat er mir zwei Dateien erstellt, warum auch immer und diese waren dann beschädigt…
Muss das Update zwingend ein cifs sein, es geht doch auch nfs..!?
Schön wäre es wenn es ein weiteres Script geben würde, welches das Backup wieder zurück spielt ;-))
Evtl. ist hier jemand dieser Sache mächtig und kann das…! Dann braucht man es nicht per Hand machen, aber ist nicht unbedingt notwendig, war nur so ein Einfall.
Vielen Dank
Hi,
danke für die Rückmeldung.
Was genau meinst du mit Update über FHEM? Also das Starten des Backups per “FHEM_Backup”-Dummy? Falls das nicht klappt, liegt das wohl an fehlenden Rechten des FHEM-Users und infolgedessen an einer falsch konfigurierten “/etc/sudoers”. (Evtl. hilft auch einfach ein einfacher Systemneustart, sofern die Datei korrekt erweitert wurde…)
Das NAS kann natürlich auch per nfs oder afp oder was auch immer gemountet werden, klar.
Ein Zurückspielen des Backups per Script wäre in der Tat mehr als interessant. Wenn ich Zeit finde und ausgiebig testen kann, wird ein entsprechender Blogpost folgen.
Grüße
Jörg
Hallo GrayDeath,
herzlichen Dank für Deinen Tip, dass der Backup-Ordner nicht leer sein darf. Jetzt läuft alles perfekt.
Viele Grüße
Martin
kein Problem, gerne doch 😉
hab auch lange gesucht und Fehlermeldungen studiert bis ich es raus hatte …
das ist das erste How-To mit “kleinen” Fehlern aber so langsam haben wir sie alle gefunden (und auch gemacht 🙂 )
Je nach System muss der Code nunmal etwas angepasst bzw. verändert werden, damit er auf mehreren Plattformen zuverlässig funktioniert. Auch bin ich nicht DER Profi, was bash-Scripte angeht, deshalb vielen Dank für die Mithilfe!
Hallo,
ich habe ja schon einige Anleitungen von diesem Blog erfolgreich umgesetzt, nur jetzt hänge ich ein wenig. Bei dem Versuch das Backup auf mein Qnap Nas zu bekommen, kommt es zu einer Fehlermeldung wenn ich mit Putty den Befehl sudo /opt/Fhem/backup.sh absetze..
Unable to find suitable address.
Mounten hat anscheinend nicht geklappt, skip
ich habe mich genau an die Anleitung gehalten? Was ist da los.
Gruss Michael
Hallo,
ich habe es jetzt doch noch zum laufen bekommen. Ich hatte ein Tippfehler versteckt.
Gruss Michael
Ah ok, perfekt 🙂
Bash-Scripts sind leider prädestiniert für solche Fehler…
Ja,
ich seh schon. Das gestaltet sich wohl für viele Leser schwieriger als gedacht…
Die angegebene IP-Adresse stimmt?
Und was sagt die Konsole, wenn du einfach “ping” bzw. “ping IP.DEINES.NAS.SYSTEMS” (jeweils ohne Anführungszeichen) eingibst?
Grüße
Jörg
Servus!
Dankeschön für die tolle Anleitung.
Habe das nun auch bei mir installiert und es läuft.
Lediglich macht er bei mir immer zwei Backups wenn ich es auslöse. Verstehe nicht ganz warum.
Ich würde später noch den Code so umstellen, dass ich, wenn es geht, die Pushover Nachricht über ein bereits definierte Pushover Instanz anspreche.
Grüße
Das Script hat auf meinen Cubitruck mit Ubuntu gut funktioniert.
Ein Paar Sachen hab ich noch:
1. Bei den zu installierenden Paketen noch fehlt ist curl und libcurl3.
Sonst verschickt das Script ja keine Pushover
2. Was mir nicht gefällt ist ,dass noch ein mal Ordner im Backupverzeichniss des NAS angelegt wird.
3. Ich würde es bevorzugen, wenn man wählen konnte ob das Backup verschoben wird oder kopiert werden soll.
So muss man immer erst das Backup vom NAS kopieren, wenn man mal wieder herstellen muss.
4. Anzahl der aufzubewahrenden Backups.
Vll gibt es ja hier ein Code Zeile welchen adaptiert werden können.
5. Warum benutzt ihr nicht FHEM zum Versenden der Pushover Nachricht?
Ansonsten ein Top Script
Hi Robert,
danke für das Feedback.
Zu deinen Punkten:
1. Ich habe die Pakete im Blogpost soeben ergänzt. Wobei je nach Systemvoraussetzungen sicherlich noch mehr Pakete nachinstalliert werden müssen.
2. Ändere den Code einfach ab. Statt
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
einfach
cp “$file” “$localMountPoint/$mountSubDir/$filename”
3. Lösche einfach folgende Codezeile und das Backup bleibt lokal erhalten
rm “$file”
4. Diese Option ist bereits eingebaut:
backupsMax=”10″
Jetzt werden 10 Backups vorgehalten.
5. Habe die Pushover-Funktion beim Testen einfach mal ins Script eingebaut, hier kann aber natürlich auch direkt FHEM genutzt werden, klar.
Grüße
Jörg
Hallo Jörg,
hab mal noch ein wenig rum gebastelt.
Ich finde es auch gut, wenn man ein wenig mehr Status Informationen zum Backup bekommt.
Also Backup kann nicht erstellt werden und dass das Backup erfolgreich erstellt wurde.
Habs noch nicht getestet:
#!/bin/bash
mountIp=”192.168.1.3″
mountDir=”_backup”
mountUser=”usr-backup”
mountPass=”jxd9pLvXBJ”
mountSubDir=”4_fhem/2_fhem”
localMountPoint=”/media/backup-server1″
#optional
backupsMax=”0″
localBackupDir=”/backup”
pushoverUser=”unGEioQEgimhLxYzWu96L6JYGr9gR5″
pushoverToken=”aG6eaexWM5ZCQBgCmaiXiCc9tETsjV”
###################################
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”
if [ ! -e “$localBackupDir” ]
then
echo “$localBackupDir wird erstellt”
mkdir -p “$localBackupDir”
else
echo “$localBackupDir bereits vorhanden”
fi
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null
if ! ping -c 1 $mountIp
then
echo “$mountIp nicht erreichbar, stop”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=ACHTUNG: Backup konnte nicht erstellt werden Mount nicht erreichbar” https://api.pushover.net/1/messages.json
exit
else
echo “$mountIp erreichbar”
fi
localIp=$(ip a s|sed -ne ‘/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}’)
if [ ! -e “$localMountPoint” ]
then
echo “$localMountPoint wird erstellt”
mkdir -p “$localMountPoint”
else
echo “$localMountPoint bereits vorhanden”
fi
if [ “$(ls -A $localMountPoint)” ]
then
echo “$localMountPoint nicht leer, kein Mounten notwendig”
else
echo “$localMountPoint leer, Mounten starten”
vorhanden=”0″
while read line
do
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0″
echo “mountComplete: $mountComplete”
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
then
echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
vorhanden=”1″
break
fi
done > “/etc/fstab”
fi
echo “Mounts werden aktualisiert”
mount -a
sleep 3
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
then
mkdir -p “$localMountPoint/$mountSubDir/$localIp”
else
echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
fi
find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
do
fileSize=”0″
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*\/}
echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
then
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
fi
#mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
rm “$file”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
done
else
echo “Mounten hat anscheinend nicht geklappt, skip.”
exit
fi
#Löschen alter Backups
if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
then
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ “$backupsDelete” -gt “0” ]
then
echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
else
echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
fi
else
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
fi
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wurde erfolgreich erstellt und verschoben” https://api.pushover.net/1/messages.json
Kann also nicht sagen ob es so geht wie ich es mir vorstelle. Werde ich aber gleich sehen, Backup läuft gerade.
Auf einem Cubietruck funktioniert das Script auch, jedoch werden dabei 9 Dateien gleicher Grösse (20.395 kB) abgespeichert. Ist das so richtig ?
Ich glaube nicht
Bei jedem Ausführen des Scripts werden 9 Backup-Dateien erstellt? *grübel*
Es wurden nur beim ersten Lauf soviel Backupdateien erzeugt. Da war das Verzeichnis noch leer. Jetzt läuft alles richtig und es wird nur ein Backup erzeugt.
Wo kann ich denn die Anzahl der gespeicherten Backups einstellen ?
Hallo Jörg,
vielen Dank für die tolle Anleitung! Ich bin inzwischen ein regelmäßiger Deines Blogs geworden.
Vermutlich wirst Du mich steinigen, wenn ich frage, ob man das relativ einfach statt auf NAS auch auf ein Backup in der Cloud wie z.B. GoogleDrive oder HiDrive umbauen kann. Mir fehlt dazu die Erfahrung, aber mit ein paar Denkanstößen bekomme ich es vielleicht hin.
Beste Grüße
Klaus
Super, danke für diese ausführliche Anleitung.
Hallo Jörg,
Erstmal Danke an Dich und deine Kollegen dass es diesen Blog gibt! Das ist für mich, und viele andere sicher schon zum Plicht-Blog geworden wenn es um FHEM geht.
Ich habe schon so einiges aus Eurem Blog umgesetzt. So auch dieses Backup Script
Hier noch ein paar Tipps meinerseits:
1) Wenn der telnet Zugang ein Passwort braucht…
> Dazu habe ich einfach eine weitere mytelnetPW=geheim Variable in den Anfang eingefügt, und dann beim perl Aufruf “perl /opt/fhem/fhem.pl 7072 $mytelnetPW” eingefügt.
2) Für die, die kein CIFS machen möchten, oder kein PW hinterlegen wollen…
Man kann das Script auch einfach auf NFS umstellen. Dazu ist dann kein PW nötig. man muss den “mount” ein wenig anpassen, und natürlich im NAS den NFS export halt auch freigeben.
3) wer kein Pushover hat, aber WhatsApp, kann seit neuestem mit “yowsup-cli” und einem Modul das im FHEM Forum gerade frisch rauskommt, oder rausgekommen ist, den curl Aufruf um pushover zu verschicken auch auf WhatsApp umbauen.
schaut bei mir so aus:
#if [[ “$pushoverToken” != “” && “pushoverUser” = “” ]]
if [[ “$sendWhatsApp” = “yes” ]]
then
#curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
perl /opt/fhem/fhem.pl 7072 $mytelnetPW “set WhatsApp send 4917xxxxxxxxx Backup $fileSizeMB MB wird erstellt”
(ich habe auch noch eine Variable eingebaut um WhatsApp ein und auszuschalten (sendWhatsApp)
4)
Den “sed” um die ip zu ermitteln habe ich bei mir auch etwas anders gemacht. Allerdings schon als die erste Version rauskam.
Hier mein Aufruf: localIp=$(ifconfig eth0 | grep -i “inet ad” | cut -d ‘:’ -f 2 | cut -d ‘ ‘ -f 1)
Beste Grüße
Holger
Hi Holger,
danke für das Lob und das Teilen deiner Tipps. Hoffe es ist auch künftig etwas Interessantes für dich dabei!
Grüße
Jörg
Hallo Holger,
vielen Dank für den Tipp mit dem telnet Passwort.
Ich war schon kurz vorm Verzweifeln!!
Jetzt ist alles schön 🙂
@Jörg
Super Feature und 5* für die Beschreibung!
LG
Hermann
Vielen Dank! 🙂
Super Beitrag! Auch gleich umgesetzt auf meiner OMV !
Problem! Er hat nur initial ein Backup gemacht. Macht aber nun nicht täglich/scheduled eines?
vielen dank für die anleitung. funzt super!
Hallo zusammen,
hab das script noch etwas bzgl Pushover angepasst.
Es besteht die Möglichkeit ein bereits definiertes Pushover device zu nutzen oder wie gehabt per curl-Aufruf.
Des weiteren kann man sich im iO-Fall und/oder niO-Fall per Pushover benachrichtigen lassen.
#!/bin/bash
mountIp=”192.168.0.45″
mountDir=”raspberry”
mountUser=”pi-fhem”
mountPass=”pi-fhem-jhjvgjhbkjlhfc”
mountSubDir=”backup/fhem”
localMountPoint=”/Q/backup”
#optional
backupsMax=”0″
localBackupDir=”/backup”
#Meldungen bei Erfolgreichem und/oder nicht Erfolgreichem Backup
backup_msg_iO=””
backup_msg_niO=”1″
#Mit bereits definiertem Pushover Devive
pushoverDevice=”myPushover”
#Ohne definiertem Pushover Device
pushoverUser=””
pushoverToken=””
###################################
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”
if [ ! -e “$localBackupDir” ]
then
echo “$localBackupDir wird erstellt”
mkdir -p “$localBackupDir”
else
echo “$localBackupDir bereits vorhanden”
fi
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null
if ! ping -c 1 $mountIp
then
echo “$mountIp nicht erreichbar, stop”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
exit
else
echo “$mountIp erreichbar”
fi
localIp=$(ip a s|sed -ne ‘/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}’)
if [ ! -e “$localMountPoint” ]
then
echo “$localMountPoint wird erstellt”
mkdir -p “$localMountPoint”
else
echo “$localMountPoint bereits vorhanden”
fi
if [ “$(ls -A $localMountPoint)” ]
then
echo “$localMountPoint nicht leer, kein Mounten notwendig”
else
echo “$localMountPoint leer, Mounten starten”
vorhanden=”0″
while read line
do
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0″
echo “mountComplete: $mountComplete”
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
then
echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
vorhanden=”1″
break
fi
done > “/etc/fstab”
fi
echo “Mounts werden aktualisiert”
mount -a
sleep 3
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
then
mkdir -p “$localMountPoint/$mountSubDir/$localIp”
else
echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
fi
find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
do
fileSize=”0″
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*\/}
echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
#Pushover wenn Backup ausgeführt wurde
if [ “backup_msg_iO” != “” ]
then
#Mit definiertem Pushover Device
if [ “pushoverDevice” != “” ]
then
perl /opt/fhem/fhem.pl 7072 “set $pushoverDevice msg ‘FHEM $localIp’ ‘Backup mit $fileSizeMB MB wird erstellt'”
fi
#Mit Web Aufruf
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
then
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
fi
fi
#mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
rm “$file”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
done
else
if [ “$backup_msg_niO” != “” ]
then
#Mit definiertem Pushover Device
if [ “pushoverDevice” != “” ]
then
perl /opt/fhem/fhem.pl 7072 “set $pushoverDevice msg ‘FHEM $localIp’ ‘ACHTUNG: Backup konnte NICHT erstellt werden'”
fi
#Mit Web aufruf
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
then
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=ACHTUNG: Backup konnte NICHT erstellt werden” https://api.pushover.net/1/messages.json
fi
fi
echo “Mounten hat anscheinend nicht geklappt, skip.”
exit
fi
#Löschen alter Backups
if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
then
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ “$backupsDelete” -gt “0” ]
then
echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
else
echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
fi
else
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
fi
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”
Hallo Jörg,
nach einer Neuinstallation habe ich das Problem, dass die Freigabe trotz dem fstab Eintrag nach einem Neustart nicht mehr automatisch gemountet wird:
# UNCONFIGURED FSTAB FOR BASE SYSTEM
/dev/sda1 / ext4 defaults,noatime,nodiratime,data=writeback,commit=600,errors=remount-ro 0 0
/dev/nand1 /boot vfat defaults 0 0
//192.200.100.81/FHEMbackup /Q/backup cifs username=administrator,password=cotton,iocharset=utf8,sec=ntlm 0 0
ein mount -l zeigt dann:
/dev/root on / type ext4 (rw,relatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=1023356k,nr_inodes=181951,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=131072k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
/dev/sdb1 on /media/usb0 type vfat (rw,nodev,noexec,noatime,nodiratime,sync,gid=100,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro) [ABORGLOG]
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=131072k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/nand1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=1048576k)
/dev/root on /var/log.hdd type ext4 (rw,relatime,data=ordered)
ramlog-tmpfs on /var/log type tmpfs (rw,relatime,size=524288k)
nach einem mount -a ist die Freigabe dann gemountet:
/dev/root on / type ext4 (rw,relatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=1023356k,nr_inodes=181951,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=131072k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
/dev/sdb1 on /media/usb0 type vfat (rw,nodev,noexec,noatime,nodiratime,sync,gid=100,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro) [ABORGLOG]
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=131072k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/nand1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=1048576k)
/dev/root on /var/log.hdd type ext4 (rw,relatime,data=ordered)
ramlog-tmpfs on /var/log type tmpfs (rw,relatime,size=524288k)
//192.200.100.81/FHEMbackup on /Q/backup type cifs (rw,relatime,sec=ntlm,unc=\\192.200.100.81\FHEMbackup,username=administrator,uid=0,noforceuid,gid=0,noforcegid,addr=192.200.100.81,file_mode=0755,dir_mode=0755,nounix,serverino,rsize=61440,wsize=65536,actimeo=1)
Hast Du eine Erklärung dafür ?
Klasse Artikel! In 20 minuten war alles eingerichtet, inkl. Pushover. Vielen Dank und viele Grüße, Peter
Hallo Jörg,
super Feature, dass auf meinem RPI super läuft – da kann man doch glatt etwas ruhiger schlafen 😉
Ich finde in meiner log-Datei trotzdem eine Meldung, die ich nicht verstehe und nicht weiß, ob es sich um einen Fehler handelt – ich habe mal den ganzen relevanten Block angehängt
….Es handelt sich um die Meldung “sed: -e expression #1, char 46: unknown option to `s’
”
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.511/0.511/0.511/0.000 ms
192.168.178.98 erreichbar
sed: -e expression #1, char 46: unknown option to `s’
/Q/backup bereits vorhanden
/Q/backup nicht leer, kein Mounten notwendig
/Q/backup/rpi/fhem/ existiert bereits
150704_060003_fhem_backup.tar.gz (18 MB) wird in den Backupordner verschoben
Fehler oder Feature?
Hi Jörn,
der sed-Befehl wird dazu genutzt die eigene IP-Adresse zu ermitteln, um die erstellte Backupdatei in einen gleichlautenden Ordner zu verschieben. Anscheinend kann dein System diesen Befehl nicht richtig interpretieren. Funktioniert es denn wie angedacht? Spontan habe ich keine Lösung parat, das müsste ich mir erst genauer ansehen.
Grüße
Jörg
Moin,
ich habe das mal etwas modifiziert, dass funktioniert (solange kein SED-Experte etwas besseres entwirft…):
localIp=$(ip a s | grep “inet ” | grep -v “127.0.0.1” | awk ‘{print $2}’ | sed -e “s#\/..##”)
Viele Grüße
Christian
Ich betreibe eine Synolgy DS214 als NAS.
Das NAS ist in diesem Fall egal. Auf welchem System läuft denn dein FHEM-Server?
Raspberry B+
Hallo,
vielleicht kann mir hier ja einer der Linux-Profis helfen.
Immer wenn ich das Script starte, egal ob per SSH oder die Oberfläche bekomme ich im Terminal den Hinweis ” Can’t Connect to localhost: 7072 ”
Ich habe das Tutorial schon mehrfach durch gespielt aber nichts ändert sich.
Das Backup funktioniert, aber halt nur einmal weil dann der Dummy nicht wieder auf Off gesetzt wird. Auch werden keine Readings geschrieben.
Bin über jeden Ansatz dankbar.
Danke und Gruß
Jan
Achja, Pushover funktioniert einwandfrei!
Keiner?
Habs grad gelesen… Ich hatte den gleichen Fehler mit “7072 can’t connect”
Wenn es noch nicht behoben ist, schaut mal nach ob Dein Telnet auskommentiert ist. Bei mir sieht es jetzt so aus und funktioniert.
# ——————————-
# Telnet
# ——————————-
define telnetPort telnet 7072 global
attr telnetPort room 10_FHEM
Hallo Jan. Ich denke dass deine Frage vielleicht besser im einem forum aufgehoben wäre. Hier in einem Blog ist das immer etwas schwierig. Aber vielleicht liegt es einfach nur daran dass du evtl ein passwort für telnet definiert hast? Oder da du in deinem Post localhost Doppelpunkt Leerzeichen 7072 angegeben hast dass da vll ein Leerzeichen irgendwo drinnen ist wo keins hin muss? Hoffe du findest den Fehler noch. Denn das Backup Script hier ist Gold wert
Beste grüße Holger
Hallo Holger,
danke für deine Antwort und die Erwähnung von Telnet.
Aus irgendeinem Grund war Telnet in cfg deaktiviert (Wahrscheinlich war ich sogar selbst 🙂 ). Jetzt ist es an und alles läuft super.
Danke und Gruß
Jan
Hallo Jörg,
tolle Anleitung. Das Thema Pushover und Log würde ich anders lösen.
Pushover besser über das FHEM-Modul. Alle Daten stellst Du ja bereits als Reading bereit. Die Log-Ausgaben sollten in ein separates Log und nicht ins Hauptlog von FHEM.
Danke und Gruß
Veit
Hallo Jörg,
Dein chown bringt übrigens gar nichts, wenn Du anschließend mit chmod die Tür ganz weit aufmachst. Da in der Datei ein Account-Passwort steht, würde ich das Script auf 700 setzen.
Gruß
Veit
Danke für den Tipp. Habe das Script entsprechend angepasst.
Mit Linux-Berechtigungen muss ich mich bei Gelegenheit auch mal näher auseinandersetzen…
Grüße
Jörg
der sed-Code produziert bei mir einen Fehler. Ich habe ihn stattdessen umgeschrieben auf
hostname -I|sed ‘s/\([0-9.]*\).*/\1/’
Gefällt mir auch 🙂
Ebenfalls angepasst…
Am Ende des Scripts macht einer sauberer Unmount Sinn, sonst bleibt der Mount offen und führt möglicherweise zu Problemen, wenn das NAS abgeschaltet wird.
echo “Mount wieder unmounten”
umount “/$localMountPoint”
Guter Punkt,
ist mir aufgenommen. Danke!
Jörg
Super Anleitung wie immer von Dir :-), leider scheitere ich daran das ich die Daten auf dem an der Fritzbox hängenden USB Speicher (als NAS) schreiben will.
Kann mir jemand Tipps geben wie ich dabei vorgehen muß oder geht das nicht mit einer NAS an der Fritzbox?
Hi Sven,
evtl. liegt es ja an fehlenden Schreibrechten des an der Fritzbox installierten USB-Speichers? Mit dieser Lösung habe ich leider nicht so viel Erfahrung, sorry.
Grüße und viel Erfolg
Jörg
Hallo Jörg , Hallo @all ,
da ich meine Fhemgeschichte nun dabei bin ,auf einen NUC umzuziehen ,bin ich gerade auch dabei das Backup wieder einzubauen 🙂
Soweit funktioniert auch alles :
– im Terminal lässt sich das Backup anstoßen
– Fhem, mit dem Schalter auf ON ,startet das Backup ( der Träger bleibt aber auf ON stehen !)
Möchte ich das ein Backup automatisch erstellt wird ,so funktioniert dies nur , wenn der Träger auf OFF steht !!!
Heißt es läuft nur ein Backup ,danach steht der Dummy weiter auf on und es wird kein weiteres Backup erstellt !
Also musste ich in der Config noch eine Stoppzeit einstellen:
define FHEMBackupstop at *12:40:00 set FHEM.Backup off
Irgendwas mache ich doch nun falsch ,oder ?
So funzt es nun auch automatisch – evtl. wäre es besser mit einem On-For-Timer gelöst ,allerdings weiß ich nicht ob das ein dumm überhaupt kann …
Das klingt genau nach meinem Problem was ich auch hatte.
Ca. 10 Kommentare nach oben.
Ist bei dir in der Fhem Config Telnet aktiviert?
Das war bei mir aus und so konnte das Script den Dummy nicht zurück setzen und es wurden auch keine readings geschrieben.
Gruß
Jan
Hmmm, erstmal Danke für den Ansatz ,aber laut config :
define telnetPort telnet 7072 global
Sollte also gesetzt sein 🙁
Hallo,
ich bekomme leider folgende Fehlermeldung:
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Woran liegt das? Anscheinend kann das NAS nicht gemounted werden?!?
Hallo, jetzt habe ich zumindest mal das mounten hinbekommen. Aber leider funzt es noch nicht. Kann mir vielleicht jemand helfen. Nach dem mounte bricht er mit folgender Meldung ab:
———–
rtt min/avg/max/mdev = 0.583/0.583/0.583/0.000 ms
192.168.2.101 erreichbar
/media/NAS/Backup bereits vorhanden
/media/NAS/Backup leer, Mounten starten
mountComplete: //192.168.2.101/Backup /media/NAS/Backup cifs username=++++,pass word=++++,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.101/Backup /media/NAS/Backup cifs username=++++,pass word=++++,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.101/Backup /media/NAS/Backup cifs username=++++,pass word=++++,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.101/Backup /media/NAS/Backup cifs username=++++,pass word=++++,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.101/Backup /media/NAS/Backup cifs username=++++,pass word=++++,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.2.101/Backup /media/NAS/Backup cifs username=++++,password=++++,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
Mounten hat anscheinend nicht geklappt, skip.
——————
Die Updatedatei ist im lokalen Ordner vorhanden. Wenn ich es per “Hand” in den gemounteten Ordner schieben funktioniert es auch. Aber aus irgendeinem Grund denkt das Skript das es nicht geklappt hat, wieso??
Danke
Hallo,
ich bekomme es nicht hin!
Meine Daten:
mountIp=”192.168.178.25″
mountDir=”Backup”
mountUser=”RPIBackup”
mountPass=”XXXXXX”
mountSubDir=”rpi/fhem”
localMountPoint=”/mnt/Backup”
Das kommt dabei heraus:
pi@raspberrypi ~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.178.25 (192.168.178.25) 56(84) bytes of data.
— 192.168.178.25 ping statistics —
1 packets transmitted, 0 received, 100% packet loss, time 0ms
192.168.178.25 nicht erreichbar, stop
Wie richtet Ihr dies auf ein Synology NAS ein?
Gruß
Ralf
Also ich habe mir einen neuen Gemeinsamen Ordner angelegt /Backup/Fhem .
Einen Extra User für Fhem, dem ich nur schreib und lese Rechte auf den Backup ordner gegeben habe und ich habe nur die Applikation “Filestation” aktiviert.
und die Config im script sieht dann so aus.
mountIp=”192.168.0.91″
mountDir=”backup”
mountUser=”Fhem_backup”
mountPass=”***********”
mountSubDir=”Fhem”
localMountPoint=”/Q/backup”
#optional
backupsMax=”20″
localBackupDir=”/backup”
pushoverUser=”********”
pushoverToken=”*********”
pushoverDevice=”********”
Gruß
Jan
Mal eine andere blöde Frage: Ist die IP von dem NAS denn richtig? Weil das Script bekommt ja keine Antwort von dem NAS. Kannst du den NAS vom PC aus pingen?
Eventuell liegt es auch an der Firewall im NAS das das gesperrt ist. Vielleicht zum testen mal komplett deaktivieren.
Gruß
Jan
Hallo Jan,
danke für deine Hilfe.
Ich habe es nun mal neu erstellt:
mountIp=”192.168.178.25″
mountDir=”home”
mountUser=”FHEM”
mountPass=”FHEMBackup”
mountSubDir=”FHEM/Backup”
localMountPoint=”/Q/backup”
#optional
backupsMax=”0″
localBackupDir=”/backup”
pushoverUser=””
pushoverToken=””
Meine DS114 hat die IP 192.168.178.25
Einen User auf der DS114 FHEM mit Passwort:FHEMBackup habe ich erstellt und in dessen Ordner home soll das Backup in den Unterordner FHEM/Backup.
In etc/fstab habe ich eingetragen:
//192.168.178.25/home /Q/backup cifs username=FHEM,password=FHEMBackup,iocharset=utf8,sec=ntlm 0 0
Nun kann ich vom Raspberry mittels Cyberduck über /Q/backup/FHEM/Backup die Datei die ich per hand dort abgelegt habe sehen.
Also ist das NAS doch gemounted oder nicht?
Per Cyberduck kann ich mittels copy und paste eine Backupdatei von /backup nach /Q/backup/FHEM/Backup übertragen!
Gruß
Ralf
Hallo Jan,
ja die DS114 ist von meinem Macbook anpingbar!
„Ping“ wurde gestartet …
PING 192.168.178.25 (192.168.178.25): 56 data bytes
64 bytes from 192.168.178.25: icmp_seq=0 ttl=64 time=1.474 ms
64 bytes from 192.168.178.25: icmp_seq=1 ttl=64 time=1.549 ms
64 bytes from 192.168.178.25: icmp_seq=2 ttl=64 time=1.542 ms
64 bytes from 192.168.178.25: icmp_seq=3 ttl=64 time=4.411 ms
64 bytes from 192.168.178.25: icmp_seq=4 ttl=64 time=2.988 ms
— 192.168.178.25 ping statistics —
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.474/2.393/4.411/1.158 ms
In meiner DS114 steht FHEM als über cifs verbundener Benutzer drin.
Gruß
Ralf
Hallo,
ich habe versucht das Backup nachzubilden. Leider erscheinen beim Ausführen ständig Fehler im FHEM-Log (SYS_BackupRun return value: -1) und das fast im Sekundentakt. Der Prozess lässt sich nur durch ein reboot beenden.
Ich meine es liegt an den Zeilen, durch die UserReadings zurückgegeben werden (z. B. perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”). Lasse ich diese weg, läuft das Script durch.
Was läuft bei mir falsch? Würde die “Statusmeldungen” schon gern im FHEM nutzen.
Puh,
habe gerade mal ein manuelles Backup über den Dummy angestoßen und parallel das Log gecheckt. Habe keine Probleme dieser Art, kann deshalb leider an dieser Stelle nicht wirklich weiterhelfen, sorry.
Hallo Jörg,
vielen Dank für Deine Mühen, bei mir läuft das Backup nun auch endlich… 😉
Ich bin Mac-User und speichere auf einer Freigabe meines Server´s, mit einer kleinen Anpassung im:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,nounix,iocharset=utf8,sec=ntlmssp 0 0″
Vielen Dank, vielleicht hilft es noch jemanden…
LG Olli
Hallo
Ich bin auf einem RPI 2 mit Noobs/Raspian.
FHEM installation wie im Blog beschrieben lief einwandfrei.
Bevor ich nun beginnen wollte mit meinen Basteleien fand ich es eine gute Idee den Backup zuerst mal noch einzurichten.
Beim durcharbeiten dieser Anleitung ist mir aber etwas komisches passiert.
Bis und mit Schritt “Backup-Script backup.sh erstellen” hatte ich keine Fehlermeldungen. Scheinbar alles ok.
Beim Aufruf von “http://192.168.1.xxx:8083/fhem?cmd=style%20edit%20backup.sh” passiert nichts mehr. Die Webseite von FHEM wird nicht mehr geladen. Mit “sudo /etc/init.d/fhem status” bekomme ich die Meldung “FHEM is running”. Versuche ich mit “sudo /etc/init.d/fhem stop” den FHEM server zu stoppen, bleibt die Antwort dieselbe. FHEM ist einfach immer am laufen. Die Seite wird aber nicht mehr geladen.
Habe noch diesen “fhem ALL=(ALL) NOPASSWD: ALL” wieder ausgebaut ohne erfolg.
Mehrmals den ganzen RPI durchstarten hat auch nicht geholfen.
Kann mir da jemand ev. weiterhelfen?
Viele Grüsse
Conti
Hi,
erstmal danke für die ganze Arbeit hier.
Prinzipiell läuft das Backup. Aber es werden keinerlei readings gesetzt und alle “perl /opt/fhem/fhem.pl 7072” Befehle scheinen ins Leere zu laufen. Telnet steht auf initialized, die Rechte hab ich vergeben, die Sudoers gesetzt… ich komme nicht weiter.
Habt ihr noch Tipps für mich?
Ich würde auch lieber ein eigenes FileLog für die Backups haben, anstatt alles ins HauptLog zu schreiben, hat wer Ahnung, wie das geht?
Gruß
Michael
So, dank des Fhem-Forums hab ich den Fehler gefunden. Wäre vieleicht ein Punkt für die obige Anleitung.
Ich hatte in Fhem im telnet Device das attr password gesetzt. Dadurch wurde kein Befehl per telnet entgegen genommen (komischerweise aber auch kein Fehler angezeigt).
Entweder setzt man hinter jedes 7072 in der per-Befehlszeile das Passwort ein, oder man entfernt das Attribut aus dem telnet Device und schränkt per allowfrom den Zugriff auf Telnet so ein, dass nur der localhost durch kommt:
attr telnet allowfrom 127\.0\.0\.1
Dann läuft alles wie gewünscht. Wie gesagt, war nicht mein Einfall, aber vielleicht haben andere ja auch das Problem.
Gruß
Michael
Hallo,
ich versuche das Backup von fhem mit einem Raspi2 mit Jessie auf dem usb Speicher einer Fritzbox zu sichern. Irgendwo habe ich wohl einen Fehler. Seit gut einer Stunde versuche die Einstellungen zu ändern.
Ich bekomme folgendes nach Eingabe von:
sudo /opt/fhem/FHEM/backup.sh
“ausgespuckt”
/backup bereits vorhanden
PING fritz.nas (192.168.2.1) 56(84) bytes of data.
64 bytes from fritz.box (192.168.2.1): icmp_seq=1 ttl=64 time=0.442 ms
— fritz.nas ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.442/0.442/0.442/0.000 ms
fritz.nas erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
mountComplete: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi /Q/backup cifs username=Torsten,password=575739,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount: /etc/fstab: parse error: ignore entry at line 6.
mount: /etc/fstab: parse error: ignore entry at line 12.
mount: /etc/fstab: parse error: ignore entry at line 15.
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount: mount point FhemPi does not exist
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount: (null): mount failed: Invalid argument
Mounten hat anscheinend nicht geklappt, skip.
Hier die ersten Zeilen meiner bachup.sh:
#!/bin/bash
mountIp=”fritz.nas”
mountDir=”Hitachi-HTS541680J9SA00-01/FhemPi”
mountUser=”Torsten”
mountPass=”575739″
mountSubDir=”FhemPi”
localMountPoint=”/Q/backup”
#optional
backupsMax=”0″
localBackupDir=”/backup”
pushoverUser=””
pushoverToken=””
###################################
Der Ort auf der Firzbox wird so angezeigt:
/ fritz.nas / Hitachi-HTS541680J9SA00-01 / FhemPi
Bestimmt übersehe ich etwas und bin für Tipps wirklich dankbar.
Vielen Dank
Torsten
Hallo Thorsten,
ich hatte dasselbe Problem, dass sich mein FHEM Server (wheezy) nicht mit einer 1TB-Festplatte an meiner Fritzbox 7490 verbinden wollte. Mit viel Googlen hab ich eine Lösung hierfür gefunden. Tausche die Zeile, die mit mountcomplete in Jörgs Script anfängt, durch diese hier aus:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlmv2″
Die Parameter kannst du ja am Anfang des Skripts setzen. Trage dort deine Informationen so ein, dass folgende Zeile als Ergebnis rauskommt:
///// /Q/backup cifs username=,password=,iocharset=utf8,sec=ntlmv2
Maßgeblich für die Verbindungsprobleme ist wohl der Parameter sec=ntlmv2. Dieser ist notwendig, damit die Verbindung zur Fritzbox funktioniert. Ich gehe hier von einer Fritzbox 7490 ab Firmware 6.20 aus.
Viel Erfolg
Das Backup läuft bei mir soweit ganz gut aber leider nicht das Löschen der alten Backups. Im Log steht nur rm: missing operand
Hab das Skript eigentlich so von Blog aus übernommen und nur die IP Variabel aus dem Pfad raus genommen.
Hallo Jörg,
super Anleitung, hat bei mir einwandfrei geklappt bzw. tut es jetzt jeden Tag 😉
Das einzige, das mich stört: im FHEM Logfile steht jetzt mein Passwort für den NAS (bei mir ein HDD an der Fritzbox) im Klartext drin. Kann ich das irgendwie verhindern?
So sieht der Log-Eintrag bei mir aus:
__________________
2015.11.01 06:00:00 3: FHEMBackupOn return value: -1
/backup bereits vorhanden
PING 192.168.xxx.xxx (192.168.xxx.xxx) 56(84) bytes of data.
64 bytes from 192.168.178.1: icmp_req=1 ttl=64 time=0.781 ms
— 192.168.xxx.xxx ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.781/0.781/0.781/0.000 ms
192.168.178.1 erreichbar
/FritzBox bereits vorhanden
/FritzBox leer, Mounten starten
mountComplete: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.xxx.xxx/fritz.nas /FritzBox cifs username=xx,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error(16): Device or resource busy
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
/FritzBox//TOSHIBA-MQ01ABD100-01/piBackup/fhem/192.168.xxx.xx existiert bereits
151101_060001_fhem_backup.tar.gz (21 MB) wird in den Backupordner verschoben
4 Backups vorhanden – nur 3 aktuelle Backups werden vorgehalten – 1 Backups werden gelöscht
Mount wieder unmounten
_____________
Danke für den tollen Blog,
Kristof
Hallo Jörg
Nach intensiver Suche für eine gute Backup-Lösung bin ich wieder bei deiner Lösung (grandios) gelandet, die ich wohl gerne implementieren möchte. Zuvor habe ich noch ein paar Fragen:
1. Hast du (oder andere Leser) Erfahrungen, hiermit eine geöffnete fhem.db zu sichern ?
2. Auf meinem RPI läuft auch noch ein SolarView. Hierfür möchte ich ungern eine andere Lösung anwenden. Was ist der beste Weg ?
3.Ich habe verschiedene Scripte gefunden, um die komplette SD-Karte zu sichern. Hast du eine Empfehlung? Natürlich wäre es schön, wenn alle Ansätze aus einem Guss wären.
4. Da ich linuxmässig ein kompletter Laie bin, ist die “backup.sh” ein reservierte Name oder kann man auch eine “backup2.sh” anlegen ?
5. @Kristof: Wie ich sehe, sicherst du auf die FritzBox.
Ist da etwas abweichendes zu beachten ausser dem Hinweis von Leonid ?
mountip, ist das dann die IP-Adresse ( bei mir als Router 192.168.178.1) oder der symbolisch Name ?
Ist ein USB-Stick oder die Festplatte sinnvoller ?
Danke für den klasse Ansatz
Jürgen
Hallo, erst einmal muss ich sagen das ich diese Seite hier super finde… vor allem für Einstiger in FHEM etc. Jetzt habe ich hier nur ein kleines Problem. Ich habe eine “Synology NAS” und komme etwas durcheinander mit den Pfaden. Vielleicht kann mir hier ja jemand helfen….
erhalte immer diese Meldung:
/Backups bereits vorhanden
PING 192.168.178.100 (192.168.178.100) 56(84) bytes of data.
— 192.168.178.100 ping statistics —
1 packets transmitted, 0 received, 100% packet loss, time 0ms
192.168.178.100 nicht erreichbar, stop
Hier noch einen Auszug aus der Datei:
mountIp=”192.168.178.100″ (Die IP meines NAS)
mountDir=”backup”
mountUser=”admin”
mountPass=”xxxxxxxxxx”
mountSubDir=”rpi/fhem”
localMountPoint=”/Homeserver/Backup”
#optional
backupsMax=”0″
localBackupDir=”/Backups”
Danke schon einmal….
Hi,
danke für die gute Anleitung,
ich habe allerdings das Problem, das mein Laufwerk nicht gemountet wird. Da ich aber einen dauerhaften Mount des Laufwerks habe (außerhalb des Scripts), möchte ich Fragen, was ich ändern muss um einen bereits local gemounteten share / Ordner zu nutzen.
Gruß
Jan
OK Fehler gefunden 😉 war ein / zuviel… sorry
Besten Dank für die gute Anleitung. Nur leider funktionierts bei mir nur teilweise. Starte ich den Dummy im FHEM wie beschrieben oder lasse den Timer arbeiten, wird kein Backup erstellt.
Prüfe ich die Einstellungen im Terminalfenster (wie beschrieben), wird ein Backup erstellt, das Syno-NAS gemountet und Backupdatei verschoben. Alles tadellos wie gewünscht. Nur leider wird der Befehl über die FHEMoberfläche ignoriert, bzw. nicht ganz ausgeführt.
In den Readings steht:
info: backup starting now (zeitpunkt ist aber veraltet)
state: on
auch wird das letzte erfolgreiche Backup angezeigt welcher jedoch manuell über das Terminalfenster ausgeführt wurde.
Im Logfile wird folgendes hinzugeführt:
/opt/fhem/backup bereits vorhanden
PING 192.168.0.5 (192.168.0.5) 56(84) bytes of data.
64 bytes from 192.168.0.5: icmp_seq=1 ttl=64 time=0.298 ms
— 192.168.0.5 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.298/0.298/0.298/0.000 ms
192.168.0.5 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.0.5/FHEM_Backup /Q/backup cifs username=fhem,password=password,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount: only root can do that
Mounten hat anscheinend nicht geklappt, skip.
Wenn ich das richtig interpretiere wird hier das Backup gar nicht gemacht?
Bin für jeden Tip dankbar
Hallo erst mal muss ich danke sagen, für die ganzen Anleitungen die du zur Verfügung stellst.
Ich versuche die FritzBox NAS als speicherplatz für die Backups zu verwenden doch leider komme ich nicht weiter es kommt immer zu dieser Fehlermeldung.
2015.12.23 03:30:25 3: FHEMBackupOn return value: -1
/backup bereits vorhanden
PING fritz.nas (192.168.178.1) 56(84) bytes of data.
64 bytes from fritz.box (192.168.178.1): icmp_req=1 ttl=64 time=0.401 ms
— fritz.nas ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.401/0.401/0.401/0.000 ms
fritz.nas erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
/etc/fstab: Eintrag bereits vorhanden: //fritz.nas/PI-239-USB2-0Drive-01/backup /Q/backup cifs username=tcaesar,password=th1577th,iocharset=utf8,sec=ntlmv2
Mounts werden aktualisiert
[mntent]: line 7 in /etc/fstab is bad
mount: mount point cifs does not exist
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
2015.12.23 03:32:16 3: FHEMBackupOn return value: -1
/backup bereits vorhanden
Was kann ich ändern, oder wo ist der Fehler.
Danke MfG Torsten
Hallo Jörg,
ich verfolge diesen Blog schon eine ganze Weile und er hat mir bei meinem Einstieg in die Hausautomation auch sehr gute Tips gegeben (habe fhem auch auf einem NUC installiert; Hauptanwendung Heizungsvisualisierung (Pelletheizung und Thermostate) sowie das Hoflicht). Auch das hier gezeigte Backup-Verfahren klappte so ziemlich auf Anhieb. Einen Hinweis würde ich gerne noch geben: das Editieren der “sudoers” mit nano ist brandgefährlich. Ich habe mir so erstmal den Server komplett zerschossen (ein kleiner Tippfehler, und weg war sudo…). Das hieß also raus mit dem Server aus der Abstellkammer, Monitor und Tastatur anklemmen, Wiederherstellungskonsole und sudo reparieren.
Nach einigem Stöbern in diversen Ubuntu-Foren habe ich gelernt, dass man sudoers NUR und wirklich NUR mit dem Befehl “sudo visudo” öffnen sollte, da dies eine Syntaxüberprüfung gewährleistet (verwendet letztendlich auch nano).
Viele Grüße und weiter so mit dem Blog, ist echt klasse!
Oliver
P.S. durch eine kleine Skriptergänzung sichere ich zusätzlich zum fhem PFad auch noch die Logdateien (filelog und dblog), die ich aus Platzgründen auf das Homelaufwerk auf einer separaten Partition ausgelagert habe, in dasselbe .tar-file.
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” “/home/fhem/dblog” “/home/fhem/filelog” &>/dev/null
Danke! Hat einwandfrei funktioniert!
RPI2 mit Raspbian Jessie und FHEM 5.7
Backup auf Windows Share.
🙂
Zur Info für alle Syno-Nutzer: Auf meiner 212+ liefert die Backup-Funktion von FHEM auch eine komplette fhem.cfg im TAR.
Dort zu finden unter: \FHEM-jjjjmmtt_hhmmss\usr\local\FHEM\etc\
Danke an Jörg, ich stöbere immer wieder gerne in Deinem Tec-Blog.
Schöne Güße,
Dirk
Habe mich wiedereinmal meinem Backupproblemchen gewidmet, komme aber nicht weiter.
Das backup.sh funktioniert tadellos auf mein Syno-NAS, wenn dieses wie beschrieben von der Konsole aus gestartet wird.
Leider wird das Backup vom FHEM aus nicht ausgelöst.
Meine Vermutung liegt in einem Bug der beschriebenen /etc/sudoers, welche ich mittlerweile zigmal geändert hab. Anfangs mit dem beschriebenen nano Befehl und später (weil Google dazu rät) mit visudo.
Jetzt stelle ich fest, dass ich im besagten Verzeichnis /etc/sudoers gleich 2 Sudoersdateien mit gleicher Grösse aber verschiedenen Zeitstempeln habe?!?
Ls -l (Auszug):
-r–r—– 1 root root 776 Jan 14 23:04 sudoers
-rw-r–r– 1 root root 776 Nov 4 20:12 sudoers
drwxr-xr-x 2 root root 4096 Sep 22 20:42 sudoers.d
Ist das korrekt? (Bin Linuxneuling kann mir aber nicht vorstellen, das zwei gleichlautende Dateien im gleichen Verzeichnis vorhanden sind).
Wenn nein wie bringe ich die Datei weg? (Die auswahl der Datei wird ja schwierig)…
Meine Sudoers sieht folgendermassen aus (mit “sudo nano /etc/sudoers” aufgerufen):
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
fhem ALL=(ALL) NOPASSWD:ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on “#include” directives:
#includedir /etc/sudoers.d
Oder vieleicht kann mir jemand sagen, wo ich was übersehen habe?
Besten Dank für ein Feedback
Hallo Jörg,
vielen Dank für Dein Script, dass ich etwas erweitert habe:
#!/bin/bash
# set to true for switching to echo
debugmode=false
mountIp=”192.168.0.50″
mountDir=”Volume_1″
mountUser=
mountPass=
mountSubDir=”fhem-backup”
localMountPoint=”/mnt/nas”
fhemdir=”/usr/share/fhem”
backupfilename=”RPiTreppe”
#optional
backupsMax=”0″
localBackupDir=”/restoreDir”
pushoverUser=””
pushoverToken=””
###################################
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup start_time $(date +%y%m%d_%H%M%S)”
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: backup starting now’}”
else
echo “FHEM-Backup: backup starting now”
fi
COLUMNS=200 dpkg-query -l > “$fhemdir”/backup/packages_list.list
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: creating debian informational package list’}”
else
echo “FHEM-Backup: creating debian informational package list”
fi
dpkg –get-selections | awk ‘!/deinstall|purge|hold/ {print $1}’ > “$fhemdir”/backup/packages.list.save
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: creating debian package list’}”
else
echo “FHEM-Backup: creating debian package list”
fi
apt-mark showauto > “$fhemdir”/backup/package-states-auto
apt-mark showmanual > “$fhemdir”/backup/package-states-manual
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: creating debian extended package status’}”
else
echo “FHEM-Backup: creating debian extended package status”
fi
find /etc/apt/sources.list* -type f -name ‘*.list’ -exec bash -c ‘echo -e “\n## $1 “;grep “^[[:space:]]*[^#[:space:]]” ${1}’ _ {} \; > “$fhemdir”/backup/sources.list.save
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: creating debian package sources’}”
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: now starting fhem backup’}”
else
echo “FHEM-Backup: creating debian package sources”
echo “FHEM-Backup: now starting fhem backup”
fi
if [ ! -e “$localBackupDir” ]
then
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: Verzeichnis $localBackupDir wird erstellt’}”
else
echo “FHEM-Backup: Verzeichnis $localBackupDir wird erstellt”
fi
mkdir -p “$localBackupDir”
else
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: Verzeichnis $localBackupDir bereits vorhanden’}”
else
echo “FHEM-Backup: Verzeichnis $localBackupDir bereits vorhanden”
fi
fi
backupfile=”$(date +%y%m%d_%H%M%S)_fhem_$backupfilename.tar.gz”
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: generating backup file: $backupfile’}”
else
echo “FHEM-Backup: generating backup file: $backupfile”
fi
tar –exclude=backup -cvzf “/$localBackupDir/$backupfile” “$fhemdir” &>/dev/null
if ! ping -c 1 $mountIp
then
perl “$fhemdir”/fhem.pl 7072 “set FHEM.Backup error”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup end_time $(date +%y%m%d_%H%M%S)”
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $mountIp nicht erreichbar, stopped’}”
else
echo “FHEM-Backup: $mountIp nicht erreichbar, stopped”
fi
exit
else
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $mountIp erreichbar’}”
else
echo “FHEM-Backup: $mountIp erreichbar”
fi
fi
localIp=$(ip a s|sed -ne ‘/127.0.0.1/!{s!^[ t]*inet[ t]*([0-9.]+)/.*$!1!p}’)
if [ ! -e “$localMountPoint” ]
then
if [ $debugmode = false ]
then
mkdir -p “$localMountPoint”
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $localMountPoint wird erstellt’}”
else
echo “FHEM-Backup: $localMountPoint wird erstellt”
fi
else
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $localMountPoint bereits vorhanden’}”
else
echo “FHEM-Backup: $localMountPoint bereits vorhanden”
fi
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $localMountPoint nicht leer, kein Mounten notwendig’}”
else
echo “FHEM-Backup: $localMountPoint nicht leer, kein Mounten notwendig”
fi
else
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $localMountPoint leer, Mounten starten’}”
else
echo “FHEM-Backup: $localMountPoint leer, Mounten starten”
fi
vorhanden=”0″
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs rw,nounix,user=$mountUser,password=$mountPass 0 0″
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: mountComplete: $mountComplete’}”
else
echo “FHEM-Backup: mountComplete: $mountComplete”
fi
while read line
do
if [ $debugmode = true ]
then
echo “pruefzeile : $line”
fi
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
then
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: /etc/fstab: Eintrag bereits vorhanden: $mountComplete’}”
else
echo “FHEM-Backup /etc/fstab: Eintrag bereits vorhanden: $mountComplete”
fi
vorhanden=”1″
break
fi
done > “/etc/fstab”
fi
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: Mounts werden aktualisiert’}”
else
echo “FHEM-Backup: Mounts werden aktualisiert”
fi
mount -a
sleep 3
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
then
mkdir -p “$localMountPoint/$mountSubDir/$localIp”
else
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $localMountPoint/$mountSubDir/$localIp existiert bereits’}”
else
echo “FHEM-Backup: $localMountPoint/$mountSubDir/$localIp existiert bereits”
fi
fi
find “$localBackupDir” -name ‘*.*’ | while read file
do
fileSize=”0″
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*/}
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $filename ($fileSizeMB MB) wird in den Backupordner verschoben’}”
else
echo “FHEM_Backup: $filename ($fileSizeMB MB) wird in den Backupordner verschoben”
fi
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
then
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
fi
#mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
rm “$file”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
done
else
perl “$fhemdir”/fhem.pl 7072 “set FHEM.Backup error”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup info error while mounting”
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: Mounten nicht erfolgreich, stopped’}”
else
echo “FNEM-Backup: Mounten hat anscheinend nicht geklappt, skip.”
fi
exit
fi
#Löschen alter Backups
if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
then
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ “$backupsDelete” -gt “0” ]
then
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht’}”
else
echo “FHEM-Backup: $backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
fi
ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
else
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: $backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten’}”
else
echo “FHEM_Backup: $backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
fi
fi
else
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
fi
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”
# echo “Mount wieder unmounten”
umount “$localMountPoint”
perl “$fhemdir”/fhem.pl 7072 “set FHEM.Backup off”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup info backup finished”
perl “$fhemdir”/fhem.pl 7072 “setreading FHEM.Backup end_time $(date +%y%m%d_%H%M%S)”
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: backup finished’}”
else
echo “FHEM-Backup: backup finished”
fi
Grüße Jörg
@Jörg Wiemann:
Danke für deinen Ansatz. Der gefällt mir so gut, dass ich diesen direkt übernommen habe, da ich mich mit diesem Backup-Ansatz sowieso beschäftigen wollte.
Leider sind aber noch ein paar Bugs enthalten bzw. in deinem Kommentar wurde gewisse Zeichen entfernt.
Die Hochkommata wurde an mehreren Stellen entfernt. Beispiel
[code]
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
[/code]
Dann fehlten ein paar IF-Abfragen bzw. es ist der der letzte Teil davon enthalten:
[code]
if [ “$vorhanden” != “1” ]
then
echo “/etc/fstab: Eintrag wird ergänzt: $mountComplete”
echo “$mountComplete” >> “/etc/fstab”
if [ $debugmode = false ]
then
perl “$fhemdir”/fhem.pl 7072 “{Log3 ‘FHEM-Backup’, 3, ‘FHEM-Backup: Mounts werden aktualisiert’}”
else
echo “FHEM-Backup: Mounts werden aktualisiert”
fi
mount -a
sleep 3
fi
[/code]
Was mir an deiner Lösung so gut gefällt ist, dass du diverse DPKG/APT-Inhalte in externe Dateien schreibst. Leider werden diese nach /backup kopiert, welches beim Packen aber exkludiert ist. Dies nur am Rande. 🙂
Danke vielmals.
Hallo Carsten,
kannst Du vielleicht Dein komplettes Backup Script posten?
Gruß
Michael
Hallo Jörg,
erstmal danke für die tolle Anleitung. Gestern Abend hat es sich bezahlt gemacht, dass das Backup immer schön läuft. Die SD Karte im Pi hat sich nach gut 4,5 Jahren verabschiedet.
Die große Frage nun, wie kann ich das letzte Backup wieder zurück spielen?
Grüße
Hi Felix,
zuerst wieder regulär FHEM und die notwendigen Pakte (hoffentlich gut dokumentiert?!) per Terminal auf dem RPI installieren.
Dann das Backupfile (hier: 160126_060205_fhem_backup.tar.gz) auf den RPI übertragen, z.B. in den Ordner “/tmp”. Das geht recht einfach bspw. per Filezilla, wobei man sich dort per SFTP (mit den SSH-Logindaten) anmelden kann.
Der Terminalbefehl für das Zurücksetzen (Entpacken der Backups) lautet dann:
sudo tar -xvzf /tmp/160126_060205_fhem_backup.tar.gz -C /
Dann noch ein
sudo restart
und alles sollte eigentlich wieder laufen.
Grüße und ich drücke die Daumen
Jörg
Hallo Jörg,
es hat geklappt!
Nimm doch diesen Punkt auch noch oben mit in die Anleitung auf, dann ist diese wirklich komplett.
Grüße
Super, dass es auf Anhieb geklappt hat!
Guter Punkt von dir, habe den Blogpost um den Gliederungspunkt “Backup zurückspielen” ergänzt.
Grüße
Jörg
Habe mein FHEM neu aufsetzen müssen und neuerdings kommt nun
FHEMBackupOn return value: -1
in der Log wenn ich das Backup starten lasse – leider wird kein backup mehr erstellt
Ich finde das Backup Script hier ist Gold wert. Was aber auch genial wäre wäre ein Script was auch irgendwie backupt was man so an Paketen installiert hat und was in config files steht die man so angepasst hatte. Klar man kann einfach die Karte ziehen und ein Backup der ganzen Karte mit win32diskimiger oder dd machen, aber nur weil ich mal eben eine smb.cfg angepasst habe oder sowas ein 16 GB Image ziehen? Ich habe soviel zusätzliches an Python zeug allein für das yowsup installiert und ich muss mir jedes mal meine bash history anschauen um nix zu vergessen. Aber Änderungen an Files tauchen da auch nicht auf.
Gibt’s da was?
Gruß
Holger
Hallo zusammen,
neuerdings wird ausser dem eigentlich Backup im Backupverzeichnis folkgende Datei mit der Grösse 0 geschrieben:
600215_235500_fhem_backup.tar-2016-02-15_23-54-22-741.gz
Woher könnte dieser Fehler kommen ?
Hallo Jörg,
ich hab dein tolles Skrip auch schon bei mir eingebaut.
Macht dein Skript auch einen unmount wenn es fertig ist? Hab einiges altest im meiner fstab stehen gehabt.
Gruß
Ich hatte auf meinem RaspberryPi noch das Problem, dass die Zeile
if [[ "$pushoverToken" != "" && "pushoverUser" != "" ]]
zu einem Fehler führte: “[[ nicht erkannt”. Die Lösung war in zwei Zeilen etwas zu ändern:
if [ "$pushoverToken" != "" -a "pushoverUser" != "" ]
Also eine eckige Klammer weniger und && durch -a ersetzen.
… und noch ein Problem: die Größe des Backup-Files wurde bei mir manchmal falsch berechnet (z.B. wenn das File kleiner als 10 MB ist). Die Lösung war die Änderung der Formel in der zweiten Zeile:
fileSize=$(du -h $file)
fileSize=(`echo $fileSize | grep -oP “([0-9,]{1,3})[BKMG]”`)
Dann muss man in den nächsten Zeilen natürlich fileSizeMB durch fileSize ersetzen.
Mist, bei Copy&Paste werden hier die rückwärts Apostrophe nicht angezeigt. Es sollte eigentlich heißen (bitte ! zweimal durch diesen Apostroph ersetzen):
fileSize=$(du -h $file)
fileSize="!echo $fileSize | grep -oP '([0-9,]{1,3})[BKMG]'!"
Hi!
Muss ich dieses Backup-Skript anpassen, wenn ich die Backups lokal auf meinem fhem-Server speichern möchte und nicht auf einem externen NAS-Gerät? Ich habe auf meinem fhem-Server Samba am Laufen und die Freigabe vom Fhem-Backup-Verzeichnis wird als Laufwerk auf meinem Windows-Rechner eingerichtet. Mit anderen Worten: Ich möchte gerne die fhem-Backups von meinem Windows-Rechner abholen lassen, wenn ich am Rechner bin.
Danke für die Antworten.
Wie muss ich das Backup-Skript anpassen, damit die Fhem-Backups NUR in einem bestimmten lokalen Ordner (nicht auf ein externes NAS) gespeichert werden?
Danke & Gruß
Thomas
Ich habe schon im Vorfeld eine Freigabe von meinem NAS-Gerät auf dem Fhem-Server eingebunden und die Datei /etc/fstab entspr. ergänzt. Meine Frage:
Wie muss ich nun das Backup-Skript anpassen, damit er nicht versucht eine Freigabe zu mounten?
Danke.
Ich habe da mal einen wichtigen Hinweis zu diesem Artikel, weil ich in diese “Falle” reingetappt bin….das File /etc/sudoers sollte man UNBEDINGT NUR mit “visudo” bearbeiten, NICHT mit nano!
Visudo prüft auf Fehler vor dem speichern, nano tut das nicht.
Wenn man wie ich per “nano” einen Syntax-Fehler eintippt und abspeichert, hat man sich anschliessend wunderbar komplett aus Linux ausgesperrt!
Bei mir hatte “root” keine Berechtigung zum Anmelden per SSH und auch KEIN Kennwort gesetzt…(ist im Setup-Artikel hier auch nicht beschrieben)…somit keine Anmeldung als root möglich und der “pi” user hat nicht genug Rechte…
Durch das nun kaputte sudoers-File konnte kein sudo mehr ausgeführt werden…sprich ich konnte *nichts* mehr machen, was Superuser Rechte erforderte.
Um das wieder zu fixen muss man die SD-Karte entweder an ein anderes Linux-System stecken (oder unter Windows mit ext2fds arbeiten) oder versuchen den Raspberry im Recovery-Modus zu booten…alles ziemlich aufwändig.
Von daher nochmal der ernstzunehmende Hinweis…nur VISUDO verwenden.
Hi Christian,
vielen Dank für deinen Hinweis! Habe ihn bereits im Artikel vermerkt.
Grüße
Jörg
Hallo Jörg,
wie schon erwähnt fände ich es genial wenn man dein Script noch um eine Version 2 ergänzen könnte.
Nämlich mit diesem Befehl anstatt dem tar Befehl:
dd if=/dev/mmcblk0 of=”$localMountPoint/$mountSubDir/$localIp/dd-Backup/$(date +%y%m%d_%H%M%S)_dd-Backup.img” bs=512
Ich habe versucht Dein Script entsprechend für mich anzupassen. Aber leider kapiere ich die Abfolge nicht ganz und scheitere dann auch an der weiteren Umsetzung.
Als erstes setzt Du ein INFO Reading des Dummys auf den Status dass das Backup gestartet wird.
Dann erstellst Du ein lokales BackupDir auf dem Pi. Und hier ist schon mein erstes Problem. Das ist eine Art TempZwischenspeicher oder?
Hier wird das TAR erstellt, und später dann weggemoved?
Das kann ich mit dem dd Kommando aber nicht machen, da ich die ganze SD Card in sich selbst backuppen würde und das würde nicht funktionieren. Ich bräuchte eine weitere HDD oder einen großen USB Sticket den ich als $localBackupDir benutze.
Der Grund warum ich das Script so cool finde ist, weil Du eine Prüfung und Begrenzung der vorgehaltenen Files behandelst, und auch die Readings updatest.
Kannst Du so ein dd-Script ggf. auch noch bauen?
Gruß
Holger
Hallo Jörg,
wie immer ein genialer Beitrag. Auch ich war eben auf der Suche nach der Möglichkeit, meinen kompletten Pi auf meinem QNAP zu sichern. Ich würde mich Holger sehr gern anschließen und dein Skript mit dem dd-Befehl erweitern. Somit hat man zusätzlich ein komplettes Backup/Image seines PI’s!
Wäre super, wenn du ggf. eine Variable einbauen könntest, die die Möglichkeit eröffnet gleich täglich eine Komplettsicherung durchzuführen.
Wie Holger schon sagt müsste es mit dem dd-Befehl funktionieren.
Viele Grüße
Tim
Hallo Jörg,
ich hätte noch einen kleinen Anpassungsvorschlag für dein Script…
Es geht um löschen der Backups nach dem die max. Zahl erreicht ist.
Ich hab anstatt “xargs rm” “xargs -I{} rm -v {}” eingefügt. Und so das Problem mit Ordner, die Leerzeichen im Namen haben, gelöst.
Gruß
Anatoli
P.S.: Vielen Dank für so viele Infos und Tipps!
Bei mir wird das Skript einfach nicht automatisch ausgeführt. Wenn ich Fhem.Backup aus und wieder anschalte, wird es ausgeführt. Starte ich das Skript über Terminal, wird es ausgeführt….aber automatisch zur festgelegten Zeit wird es nicht ausgeführt.
Im Log-File sind auch zur Programmierten Zeit keine Einträge zu finden.
Eine Idee?
Habe deine Anleitung innerhalb von 10 Minuten erfolgreich umsetzen können. Echt genial Jörg und weiter so!!! Macht mir wirklich immer wieder riesig Freude deinen Blog zu lesen und deine Ideen umzusetzen.
Gibt es auch eine Möglichkeit den Benutzernamen und Passwort für den NAS Mount im Logfile in Fhem auszublenden? Würde dies ungern im Klartext dort drin stehen haben.
Und wie mein obiger Beitrag wäre ein zweites Skript für ein Raspberry PI Backup/Image riesig! 🙂
Danke!
Tim
Servus,
Danke für dieses tolle Beispiel.
Jedoch will es bei mir nicht so wirklich.
Ich habe das backup.sh script gemäß Deines Tutorials hinterlegt.
Leider bekomme ich bei manuellem Aufruf von sudo /opt/fhem/FHEM/backup.sh zum Test direkt eine Fehlermeldung: sudo: /opt/fhem/FHEM/backup.sh: Kommando nicht gefunden
Hast Du eine Idee was das Problem sein kann?
Freue mich über jedwede Hilfestellung.
beste Grüße
Patrick
Hinter dem “sudo” darf kein “:” stehen. Probiers genau so wie im Artikel:
“sudo /opt/fhem/FHEM/backup.sh”
Grüße
Jörg
Hey,
vielen Dank für die rasche Rückantwort.
Ich habe es auch so wie im tread benannt eingegeben. Der Doppelpunkt resultiert aus der Ausgabe im terminal nachdem ich den Befehl abgesetzt habe.
Hier nochmal die komplette Ausgabe:
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
[sudo] password for pi:
sudo: /opt/fhem/FHEM/backup.sh: Kommando nicht gefunden
Heute morgen um 6:00 uhr wurde wie erwartet natürlich kein backup abgelegt.
Hast noch eine idee was ich prüfen kann/sollte?
beste Grüße
Patrick
Bekommst du den Dateiinhalt mit
sudo cat /opt/fhem/FHEM/backup.sh
im Terminal angezeigt? Falls nicht, hast du deine Datei vermutlich an einem anderen Ort gespeichert. In diesem Fall die Datei einfach im richtigen Verzeichnis nochmal neu erzeugen.
Grüße und viel Erfolg
Jörg
Hi,
In der tat ist es so das der komplette Inhalt des scripts angezeigt wird wenn ich den Befehl: sudo cat /opt/fhem/FHEM/backup.sh absetze.
beste Grüße
Patrick
Sofern du mit dem User “pi” per ssh auf deinem Raspberry Pi eingeloggt bist (laut deinen vorherigen Anhaben ist das ja so), habe ich ehrlich gesagt keinen Schimmer, wo das Problem liegen könnte.
Hi Jörg,
schade. Aber trotzdem vielen Dank für Deine Mühe 😉
Toll dein Blog, hoffe Du machst voller Tatendrang weiter so!
Ich werde in den nächsten Tagen nochmal alles Schritt für Schritt durchgehen und berichten.
Sollte noch ein Blogleser eine Idee haben, immer gern her damit.
In diesem Sinne, gut’s Nächtle
Mfg
Hallo Jörg,
ich wollte mich nur mal kurz melden und Dir mitteilen das es nun funktioniert nachdem ich einen dummen Userfehler ausgemerzt habe.
Ich depp hatte zu Beginn das Script in /opt/fhem/backup.sh hinterlegt. um dies zu bereinigen und in den richtigen Ordner /opt/fhem/FHEM/backup.sh zu bringen, musste ich die Rechte des Ordners kurzzeitig ändern.
Hierbei ist dann wohl der Zugriff danach nicht mehr korrekt gewesen.
Nochmal alles gemäß Deines Tuts installiert und schon war alles schön.
Vielen Dank für Deine tollen Anleitungen
beste Grüße
Patrick
Moin Jörg,
nachdem mir heute Nacht irgendwie die CFG mit den Definitionen für die Aktoren auf 0byte gesetzt wurde, war es an der Zeit, dein Script auch mal an den Start zu bringen.
Was soll ich sagen… nach einer kleinen Anpassung funktioniert das wunderbar!
Gesichert wird auf einem DIY NAS unter “nas4free” im 19″ mit derzeit 6 x 3TB unter ZFS2. Aber das nur als Hinweis…
Zur Änderung:
Ich bin leider ein Linux-DAU, konnte dennoch heraus bekommen, warum das bei mir zu erst nicht funktionierte. Dazu muss ich vorausschicken, das mein NAS NUR aus dem lokalen Netz und NUR von Geräten mit fester IP zu erreichen ist. Dafür aber läuft die Backup- Freigabe unter dem User “ftp” und ist auch als Gast zu erreichen.
Das bedingt aber auch, das beim Mounten weder Username noch Kennwort benötigt wird; aber leer lassen klappt nicht. Daher habe ich im backup.sh in Zeile 57 den Bereich “username=$mountUser,password=$mountPass,” heraus genommen und als Kommentar gesichert. Und nun funktioniert das.
Wenn ich es denn könnte, hätte ich nun eine “IF THEN” gebaut, die diesen Teil bei leerem User und/oder leerem Passwort heraus nimmt; kann ich aber nicht.
Nun bleibt nur noch ein Problem über:
Nach einem erfolgreichen Backup, angestoßen via SSH, verbleibt am Ende eine Fehlermeldung wie folgt:
Mount wieder unmounten
umount: /mnt/backup: target is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)
Warum denn? Ich verstehe die Meldung zwar, aber hab keine Ahnung, wo ich da suchen soll…
Ist aber nicht so wichtig, weil’s ja funktioniert 😉
DLzG
Micha
Nachtrag:
Geht doch nicht so wirklich…
Problem 1:
Zumindest per SSH wird immer ein Kennwort für den User root verlangt, so bald die Definition in FHEM eingetragen ist. Frage ist also, wie sich das umgehen lässt, da ich davon ausgehe, das es dann aus der “Automatik” heraus ebenfalls nicht ohne Kennwort funktioniert…
Problem 2:
Per SSH bekommen ich, vermutlich von Pushover, folgende Fehlermeldung (wobei ich gestehen muss, das ich mit PushOver noch etwas auf Kriegsfuß stehe):
{“user”:”invalid”,”errors”:[“user identifier is not a valid user, group, or subscribed user key”],”status”:0,”request”:”c1c…blablub…43″}
Ansonsten funktioniert Pushover in FHEM. Ich habe den gleichen Token benutzt, der in FHEM auch für die Alarmmeldungen genutzt wird …
Hallo Jörg und liebe Mitleser,
eine Frage habe ich dann aber noch, z.Z habe ich das Problem das der backup Dummy nach dem Backup nicht wieder auf “OFF” getriggert wird und keine Readings des Backups gesetzt werden.
Nun habe ich verfolgt, dass es mit dem telnet Zugang zutun haben kann.
Nachdem ich einfach mal den Passwortschutz des telnet Zuganges in der FHEM.CFG auf 0 gesetzt habe, funktionierte es.
Kann ich das irgendwie umgehen? Es ist doch nicht so ratsam die Abfrage des Passwortes Telnet zu deaktivieren?!
Freue mich auf eine Antwort.
beste Grüße
Patrick
Hi Patrick,
sorry, da musst du wohl auf einen anderen Leser hoffen. Denn zum einen kann ich nicht beurteilen, was du bisher alles mit dem System angestellt hast und zum anderen bin ich da leider auch nicht der Linux-Profi, der bei Problemen dieser Art eine Lösung aus dem Ärmel schüttelt. Wenn ich das Problem auch schon einmal gehabt hätte, würde es vermutlich anders aussehen…
Grüße
Jörg
Hallo Jörg,
Danke für Deine rasche Rückmeldung.
Ich habe das Telnet Passwort nun wieder deaktiviert und es vorerst anderweitig mit einem at *08:30:00 set FHEM.Backup off gelöst.
So schaltet er den Trigger wenigstens und das automatisierte Backup läuft.
Einziger Wermutstropfen, die readings fehlen, aber damit kann ich leben.
beste Grüße
Patrick
Hallo Patrick.
Ich habe bei mir auch ein Telnet Passwort gesetzt. Ich weiss nicht mehr ob ich das damals im Script geändert hatte, oder das hier in dem Script drinnen ist, aber ich habe in meinem Script einfach noch eine zusätzliche variable gesetzt wo ich ein telnet Passwort mitgeben kann.
schaut so aus:
mytelnetPW=”p!ssw0rd”
und jeder telnetaufruf soll einfach dann so aufgerufen werden:
perl /opt/fhem/fhem.pl 7072 $mytelnetPW “setreading dummy_FHEM.Backup info backup starting now”
Hoffe es hilft!
Cu
Holger
Hallo Holger,
Schön, dass Du Dich meldest.
Das wäre eine Idee welche ich gern einmal probieren würd.
Ich hab nur keine blassen Schimmer an welche Stellen ich das genau einfügen soll. Vermute im Backup.sh, ist klar aber wo genau?
Hallo zusammen,
klasse Sache, hat von Anfang an funktioniert.
nur jetzt plötzlich hört er bei den docs auf und macht nicht weiter.
Ich habe das Skript schon einmal neu gemacht und finde einfach keinen Grund.
Kann evtl. jemand noch einen Tipp geben woran das liegt ?
Gruß Nils
Hinweis:
Wer sein FHEM auf eine größere Mascheng umzieht und diese Mascheng ggf. unter der aktuellen Debian-Jessie (lite) betreibt, sollte unbedingt darauf achten, dsa sudo überhaupt installiert ist. Denn per default wird bei Jessie wohl sudo nicht mit installiert.
Mascheng?
*prust* Mascheng = Maschine = Gerät = …
Ist mir dann auch aufgefallen, das ich im ortsüblichen Wortschatz geschrieben habe, aber nachträglich editieren geht ja nicht 😉
🙂
Vielen Dank!
Habe folgendes Problem- ich habe alles so gemacht wie du es beschrieben hast. Nur leider geht es nicht- wenn ich es aus puty herraus versuche zu testen mit fhem als user kommt er hat keine berechtigung das Backup auf Q zu verschieben.
Wenn ich es als root user versuche dann kommt /backup schon vorhanden und er macht nicht weiter.
Kann mir da jemand helfen?
… also die Meldung “/Backup schon vorhanden” kommt bei mir auch jedes mal. Ist ja auch klar, wenn man sich das Batch anschaut. Denn der Ordner ist ja angelegt und enthält die bereits angelegten Backups. Besagt im Grunde nur, das der Batch (jaja, Script meinetwegen) dieses Verzeichnis nicht neu anzulegen braucht. Das ist keine Fehlermeldung, sondern nur ein Hinweis (@Jörg: Korrigiere mich bitte, wenn ich falsch liege).
Ansonsten sieht dein Problem ganz klar nach einem Rechteproblem aus. Hast du denn mal versucht, manuell eine Datei aus dem /backup Verzeichnis auf “Q” zu kopieren (was immer auch “Q” sein mag…)? Hast du die entsprechenden Rechte auf beiden Seiten korrekt gesetzt? Darf der User fhem auf “Q” schreiben und löschen?
In diese Richtungen würde ich jetzt mal suchen, so aus meiner DAU- Sicht …
Richtig, “$localMountPoint bereits vorhanden” heisst nichts anderes, wie der Variablenname schon sagt, dass der Einhängepunkt im Dateisystem des FHEM-Servers bereits vorhanden ist. Ist also nur ein Hinweis, dass hier alles passt.
“Q” ist der Netzwerkname meines QNAP-NAS”. Entsprechend packe ich die Backups auch nach /Q/backup. Sieht wirklich nach nem Rechteproblem aus. Sowas kann echt nerven, gerade wenn man damit noch nicht viele Erfahrungen gesammelt hat. Am einfachsten erstmal jedem User alle Rechte für das betreffende Verzeichnis einräumen. Dann testen und Schritt für Schritt die nicht gewünschten Berechtigungen wieder deaktivieren.
Grüße und viel Erfolg
Jörg
PS: Es gibt direkt eine “Antworten”-Funktion nach Kommentaren auf oberster Ebene. Dann landet die Antwort etwas eingerückt und gruppiert an richtiger Stelle. Sonst wird es schnell unübersichtlich…
… ähhh ja … Den “Antworten” – Link übersehe ich irgendwie immer ^^ Sorry, ich versuche es mir hinter die Ohren zu schreiben 😉
Hallo,
habe das Problem das nach einem zurückspielen des Backups ich nicht mehr auf FHEM und Tabletui zugreifen kann. Woran könnte es liegen bzw. wer kann bei der Fehler suche behilflich sein?
Gruß
Niwa
Hi,
sollte es beim Dummy “FHEM:Backup” statt “attr FHEM.Backup event-on-change-reading state”nicht doch “attr FHEM.Backup event-on-update-reading state” heißen? Bei mir funktioniert es nur mit diesem Attribut.
Übrigens DANKE!!! für die tolle Seite, die immer wieder gerne besuche und die mir immer wieder gute Antworten auf meine Fragen gibt.
LG Karl
… da ich nun mehrere FHEM- Systeme laufen habe (eine Hauptinstanz auf einem XEON, eine Heizungssteuerung (Brenner, Pumpen) auf einem PI so wie einen PI als MultiGateway), ergab sich die Problematik, das man die Backups nicht mehr auseinander halten konnte.
Ich habe leider keine Ahnung von ShellScripten, hoffe aber, das ich das so korrekt umgesetzt habe:
Im Kopf habe ich eine Variable “backupName” hinzugefügt, welche den Namen des jeweiligen PI enthält. Denkbar wäre auch der jeweilige Hostname, aber da hab ich keine Plan, wie ich den dort einfügen kann.
Dann habe ich alle Stellen im Script gesucht, welche “_fhem_backup…” enthalten und an Stelle fhem die Variable eingefügt, was ich mir an anderen Stellen abgeschaut habe.
z.B. Zeile ~29:
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_$backupName_backup.tar.tar.gz” “/opt/fhem” &>/dev/null
Damit sollte das Backup jetzt eindeutig zuzuordnen sein (hoffe ich).
Passt das so?
Hi Michael,
wenn du das vorliegende Script verwendest, landen die Sicherungsdateien jeweils in Unterordnern, sortiert nach IP-Adressen der jeweiligen FHEM-Server. Das sollte im Grunde genügen, oder? Wenn du das anders haben möchtest, musst du wohl einfach selbst mal etwas testen. Dann siehst du ja sofort, ob es sich so verhält, wie du es dir vorstellst. Dein Ansatz sieht zumindest auf den ersten Blick machbar aus.
Grüße
Jörg
…pffft … Du hast vollkommen recht 😉 War wohl schon zu müde nach dem ganzen Geraffel mit der Brenner/Umwälzpumpen/Ladepumpen/Zirkulationspumpen/Ventilstellungen/MQTT/… ^^
BTW: Mein Prototyp der Brennersteuerung (Öl-Zentral mit Zirkulation WW, im Sommer mit Solar) läuft mehr als zufriedenstellend. Da folgt bald eine richtige Platine (mehrere; Trennung 230V~ / Niederspannung). Hat da wer Interesse?
Hallo,
dank der super Anleitung und Korrektur einiger von mir eingebauten Fehlern läuft jetzt das Backup, d.h. ich geh mal davon aus.
Auf jeden Fall hab ich schon zehn *.tar.gz Files 🙂
Was mich stört:
Beim Ausführen von: sudo /opt/fhem/FHEM/backup.sh
erhalte ich insgesamt elf mal eine Fehlermeldung:
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
ich weiss leider nicht, was dies zu bedeuten hat.
Grüße
Peter
… das schaut nach einem Tippfehler in deiner Definition aus. Vom ShellScript kann es m.E. nicht kommen, da fhem davon nichts mitbekommt, so lange im Script nicht explizit zurückgemeldet wird..
Ich hab nochmal alles geprüft. Welche Definition meinst du denn?
Der Fehler erscheint jedes mal, wenn im backup.sh der Befehl:
perl /opt/fhem/fhem.pl 7072 “……” aufgerufen wird.
Das Backup wird durchgeführt, ich erhalte *.tar.gz Files mit ca 23 MB.
Wenn ich mir das DummyDevice FHEM.Backup anschaue, so steht bei mir unter Readings nur “state on 2016-10-24 16:21:42”
Die Zeilen “Backup” und “MB” fehlen.
Wenn ich das Backup manuell über das Dummy FHEM.Backup starte bleibt der Zustand auf “on”.
Ist das ok so, oder müsste der Zustand automatisch wieder auf “off” schalten.
… bei mir schalte die alle wieder auf OFF, sobald das Backup erledigt ist, egal ob manuell oder automatisch angestoßen.
Das deutet erneut auf einen Fehler in deiner Definition, ggf. im Dummy.
Zum Vergleich meine Definition, die auf allen drei Instanzen einwandfrei läuft:
#Automatisches Backup um 04:00 Uhr starten
define backup_run at *04:00:00 set backup_dy on
define backup_set notify backup_dy:on {system (“sudo -u root /opt/fhem/FHEM/backup.sh &”)}
#dummy backup_dy
define backup_dy dummy
attr backup_dy devStateIcon off:edit_save@gray:on on:edit_save@orange:off
attr backup_dy event-on-change-reading state
attr backup_dy room System
attr backup_dy setList off on
attr backup_dy webCmd :
Das mit dem Passwort in der “backup.sh” hat so nicht funktioniert.
Ich hab mich dann in der “fhem.cfg” mit Telnet beschäftigt.
Leier gibt es im Web viel zu viele Konfigurationen, die ohne Datum sind und daher nicht mehr aktuelle Parameter beschreiben.
Letztendlich funktioniert es mit folgender Konfiguration in der fhem.cfg:
——————————————————
define telnetPort telnet 7072 global
attr telnetPort allowfrom 127\.0\.0\.1
#attr telnetPort SSL
define allowed_telnetPort allowed
attr allowed_telnetPort globalpassword meinPasswort
attr allowed_telnetPort validFor telnetPort
——————————————————-
Danke an alle, die sich um mein Problem gekümmert haben.
Danke für deine schnelle Antwort.
Hab jetzt deine Definition per copy -paste in meine fhem.cfg reingeschrieben.
Leider der selbe Effekt wie bisher. Ein gz-File wird geschrieben, die Fehlermeldungen kommen immer noch der Status bleibt auf on.
Unter Readings kommt auch nichts ausser “state on”
Vorab: Benutze mal den “Antworten” Button; habe ich auch schon Megger bekommen 😉
Hmmm. Komisch. Dateien alles UTF-8 ohne BOM, UNIX?
Ansonsten ggf. noch mal die backup.sh und die Dateirechte checken… Mehr fällt mir im Moment auch nicht ein…
Beim manuellen Starten über die Shell wird angezeigt:
————————————————————
pi@FH4PB:~ $ sudo /opt/fhem/FHEM/backup.sh
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
/backup bereits vorhanden
PING 192.168.178.30 (192.168.178.30) 56(84) bytes of data.
64 bytes from 192.168.178.30: icmp_seq=1 ttl=64 time=3.16 ms
— 192.168.178.30 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.166/3.166/3.166/0.000 ms
192.168.178.30 erreichbar
/Q/backup bereits vorhanden
/Q/backup nicht leer, kein Mounten notwendig
/Q/backup/rpi/fhem/192.168.178.155 existiert bereits
161024_180210_fhem_backup.tar.gz (816K /backup/161024_180210_fhem_backup.tar.gz MB) wird in den Backupordner verschoben
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
161024_185008_fhem_backup.tar.gz (17 MB) wird in den Backupordner verschoben
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
ls: cannot access /Q/backup/rpi/fhem/192.168.178.155: No such file or directory
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Mount wieder unmounten
umount: /Q/backup: not mounted
—————————————————-
Aber die Backups scheinen ok.
… kopier doch zum Test noch mal das Script neu in den Ordner und achte darauf, das es UTF… ist.
Aber wie gesagt kann ich nur raten… Immer doof, wenn man selber nicht davor sitzt…
… notfalls nimm mal Kontakt zu mir auf; meinen Namen anklicken und du landest auf einer meiner Webseiten. Im Impressum steht meine Mail- Addy.
Das Script basiert darauf, dass man fhem ohne Passwort betreibt. Falls ein Passwort gesetzt ist, muss man das in der jeweils angemeckerten Zeile “perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now” jeweils noch setzen. Wie sieht denn so eine Zeile bei Dir aus, Peter? Was passiert wenn du diese Zeile direkt in der Shell eingibst?
Gruß Hermann
FHEM läuft bei mir mit Passwort. Das scheint das Problem zu sein.
Wenn ich im Terminal
perl /opt/fhem/fhem.pl 7072 “setreading Backup_system info backup starting now”
aufrufe, kommt die Fehlermeldung:
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Wie kann ich das Passwort einbauen, bzw. muss ich das Passwort entfernen?
Das Passwort wird direkt nach dem telnet-Port (7072) angegeben. Man kann es einmal im Kopf des Scripts setzen, also mit “myTelnetPW=”xxxxx” und dann in den Aufrufen so ergänzen: “perl /opt/fhem/fhem.pl 7072 $myTelnetPW “setreading FHEM.Backup info backup starting now”. Entsprechend bei den anderen Zeilen auch.
Das mit dem Passwort in der “backup.sh” hat so nicht funktioniert.
Ich hab mich dann in der “fhem.cfg” mit Telnet beschäftigt.
Leier gibt es im Web viel zu viele Konfigurationen, die ohne Datum sind und daher nicht mehr aktuelle Parameter beschreiben.
Letztendlich funktioniert es mit folgender Konfiguration in der fhem.cfg:
——————————————————
define telnetPort telnet 7072 global
attr telnetPort allowfrom 127\.0\.0\.1
#attr telnetPort SSL
define allowed_telnetPort allowed
attr allowed_telnetPort globalpassword meinPasswort
attr allowed_telnetPort validFor telnetPort
——————————————————-
Danke an alle, die sich um mein Problem gekümmert haben.
Vielen Dank für das klasse Script!!
Für Freunde von Pushbullet Benachrichtigungen habe ich folgende Änderungen am Script durchgeführt.
pushoverUser=”” ->gelöscht
pushoverToken=”” -> geändert in -> pushbulletKey=”xxXXxx”
…
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]] –>geändert in
–> if [[ “$pushbulletKey” != “” ]]
…
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
–> geändert in
–> curl -u “$pushbulletKey:” https://api.pushbullet.com/v2/pushes -d type=note -d title=”FHEM $localIp” -d body=”Backup mit $fileSizeMB MB wird erstellt”
fertig.
Vielen Dank für das 1A BackupScript
Hallo liebe Speziallisten,
leider muss ich das Thema mit den Problem, dass sich ein Backup auf fritz.nas nicht durchführen lässt, nochmals ansprechen. Kämpfe mich schon tagelang damit herum.
Mit meinem QNAP hat es bis jetzt auch einwandfrei geklappt.
Habe unter anderem die Empfehlungen von Leonid genauestens eingehalten (sec=ntlmv2)
Hier mein Logfile:
2016.11.16 23:10:38 3: starteFileBackupSh return value: -1
/backup bereits vorhanden
PING fritz.nas (10.0.0.138) 56(84) bytes of data.
64 bytes from fritz.box (10.0.0.138): icmp_seq=1 ttl=64 time=0.379 ms
— fritz.nas ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.379/0.379/0.379/0.000 ms
fritz.nas erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
mountComplete: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
/etc/fstab: Eintrag bereits vorhanden: //fritz.nas/ST2000DL-003-9VT166-01 /Q/backup cifs username=chappo,password=xxxxxxxx,iocharset=utf8,sec=ntlmv2
Mounts werden aktualisiert
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Vielleicht hat doch jemand für mich den entscheidenden Tipp, bevor ich mir noch ein paar Nächte damit um die Ohren schlage 🙁
Danke Chappo
Hallo nochmals,
ich muss obige Anfrage gleich relativieren, denn das Problem wurde teilweise behoben, da ich nicht den Namen des Laufwerkes, das an die Fritzbox angeschlossen ist eingeben musste, sondern den Fritzboxnamen. Sorry.
Leider ist das Problem aber trotzdem nicht gelöst, das jetzt folgende Fehlermeldung kommt:
Mounts werden aktualisiert
/media/fritzbox-nas/fhem/10.0.0.140 existiert bereits
161118_030000_fhem_backup.tar.gz (28 MB) wird in den Backupordner verschoben
cp: „/media/fritzbox-nas/fhem/10.0.0.140/161118_030000_fhem_backup.tar.gz“ konnte nicht geschlossen werden: Eingabe-/Ausgabefehler
9 Backups vorhanden – bis 10 aktuelle Backups werden vorgehalten
LG Chappo
So jetzt hab ich das Problem endgültig gelöst und nebenbei brav Linux (über das Thema mounten) gelernt. Hat aber unzählige Stunden (und ein paar Tage) gedauert.
Des Rätsels Lösung:
mountSubDir=”ST2000DL-003-9VT166-01/fhem”
Bei der Fritzbox kann man nicht so wie bei meinem Qnap einfach als mountSupDir irgend einen Unterordner angeben, sondern muss davor noch den von der Fritzbox vergebenen Laufwerksnamen (ST2000DL-003-9VT166-01 natürlich mit / getrennt) angeben.
Vielleicht erspart sich jemand dadurch viel Stunden 🙂
LG Chappo
Hallo Jörg ich bin nach deiner Beschreibung vorgegangen und bekomme immer eine Fehlermeldung wenn ich sudo /opt/fhem/FHEM/backup.sh eingebe kommt
/backup bereits vorhanden
PING 192.168.0.101 (192.168.0.101) 56(84) bytes of data.
64 bytes from 192.168.0.101: icmp_seq=1 ttl=64 time=0.357 ms
— 192.168.0.101 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.357/0.357/0.357/0.000 ms
192.168.0.101 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag wird ergänzt: //192.168.0.101/backup /Q/backup cifs username=Passwort-Test,password=Test-12345,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
Mounten hat anscheinend nicht geklappt, skip.
Das Backup soll auf eine WD MyCloud 2TB dort habe ich ein Ordner backup angelegt muss ich dem noch irgendwelche rechte geben? stehe etwas auf dem schlauch? Danke schonmal
Hi Andre,
der User, der per CIFS auf den Ordner (Share) zugreifen soll, braucht eben Schreibrechte. Hier scheint es zu hapern. Versuch doch mal im Windowsbrowser mit diesem Benutzer auf das Share zuzugreifen. Wenn das klappt, klappts auch mit dem Script. Wenn nicht, dann musst du die Berechtigung der Freigabe entsprechend korrigieren.
Grüße
Jörg
Hallo Jörg, erstmal danke für deine ausführlichen Beschreibungen.
Beim Versuch meinen Qnap einzubinden komm ich aber leider absolut nicht weiter. Hab auch, wie in den Kommentaren hier des öfteren erwähnt, auf dem NAS eine Datei in dem Ordner erstellt, hat aber leider mein Problem auch nicht gelöst. Mit dem Finder hab ich unter smb://192.168.178.20/Sicherung vollen Zugriff mit Schreibrechten, also müsste ja bei den NAS-Einstellungen alles passen. Nach dem Start wird mir auf dem Server unter “Online-Benutzer” auch der Benutzer Fhem angezeigt.
mountIp=”192.168.178.20″
mountDir=„SICHERUNG“
mountUser=„Fhem“
mountPass=„XXX“
mountSubDir=„Fhem“
localMountPoint=”/Q/backup”
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.178.20 (192.168.178.20) 56(84) bytes of data.
64 bytes from 192.168.178.20: icmp_seq=1 ttl=64 time=10.4 ms
— 192.168.178.20 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 10.452/10.452/10.452/0.000 ms
192.168.178.20 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
mountComplete: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.178.20/„SICHERUNG“ /Q/backup cifs username=„Fhem“,password=„XXX“,nounix,iocharset=utf8,sec=ntlmssp 0 0
Mounts werden aktualisiert
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Hi Andy,
sieht stark danach aus, dass dein Editor die Anführungszeichen kaputt macht. Kontrolliere das mal und nimm nen anderen “Texteditor”…. Mehr Infos im Blogpost FHEM: Stolpersteine auf dem Weg zur funktionsfähigen Konfiguration.
Grüße und viel Erfolg
Jörg Hofmann
Super, genau dass wars. Vielen Dank für die schnelle Hilfe!
Hallo zusammen,
erstmal vielen Dank für den Text, den Code und die ganzen Hilfen. Ich habe das Backup entsprechend eingerichtet und es scheint auch alles soweit zu laufen. Allerdings lauten die letzten Zeilen bei einem Backup im Log immer wie folgt:
161206_135713_fhem_backup.tar.gz (27 MB) wird in den Backupordner verschoben
Unknown command *TelnetPasswort”, try help.
Unknown command *TelnetPasswort”, try help.
Unknown command *TelnetPasswort”, try help.
Unknown command *TelnetPasswort”, try help.
Unknown command *TelnetPasswort”, try help.
11 Backups vorhanden – nur 10 aktuelle Backups werden vorgehalten – 1 Backups werden gelöscht
Unknown command *TelnetPasswort”, try help.
Mount wieder unmounten
Ich hatte zunächst gedacht, dass ein Problem (siehe im Blog weiter oben) beim Telnetzugang vorliegen würde (Stichwort State wieder auf off setzen und weitere Details in den Readings setzen), aber diese Werte werden bei mir scheinbar alle gesetzt.
Kann mir jemand sagen, wo die Meldungen herkommen und wie ich diese beheben kann?
Vielen Dank schon im Voraus.
Grüße
Maik
Hallo,
habe eine Fritzbox mit Festplatte als NAS gemountet, funktioniert hat es leider nur einmal.
eine erneute Sicherung bleibt immer bei:
2016.12.08 08:54:13 3: FHEMBackupOn return value: -1
/backup bereits vorhanden
hängen.
Wenn ich auf den RPI schaue, merke ich, dass das Verzeichnis immer gemountet ist. Ich vermute dort den Fehler, evtl. funktioniert der unmount nicht.
Woran könnte das liegen?
habe im Script folgende Zeile für die Fritzbox angepasst:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,nounix,iocharset=utf8,sec=ntlmv2″
Danke für die Hilfe
Hallo,
Danke für die tolle Beschreibung… aber leider kann ich machen was ich will, die READINGS werden einfach nicht geschrieben. Das BACKUP funktioniert tadellos und wird schön auf mein QNAP geschrieben.
ich erhalte von Backup Etart bis Ende in der Log folgene Meldungen:
”
2016.12.08 16:29:10 3: FHEMBackupOn return value: -1
2016.12.08 16:29:10 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
/backup bereits vorhanden
PING 192.168.178.10 (192.168.178.10) 56(84) bytes of data.
64 bytes from 192.168.178.10: icmp_seq=1 ttl=64 time=1.06 ms
— 192.168.178.10 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.063/1.063/1.063/0.000 ms
192.168.178.10 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.178.10/Datei-Backup /Q/backup cifs username=admin,password=s#07@qnn.Tein,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
/Q/backup/FHEM/192.168.178.66 existiert bereits
161208_162910_fhem_backup.tar.gz (36 MB) wird in den Backupordner verschoben
2016.12.08 16:29:39 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:39 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:40 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:40 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
161208_162732_fhem_backup.tar.gz (36 MB) wird in den Backupordner verschoben
2016.12.08 16:29:44 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:44 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:44 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:44 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:45 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
2016.12.08 16:29:45 1: telnet SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 444.
Mount wieder unmounten
”
kann da jemand bitte vieleicht helfen ?
Hi,
hatte das gleiche Problem, geholfen hat mir folgendes:
fhem.cfg:
define telnetPort telnet 7072 global
attr telnetPort allowfrom 127\.0\.0\.1
#attr telnetPort SSL 1
define allowed_telnetPort allowed
attr allowed_telnetPort password DEINPASSWORT
attr allowed_telnetPort validFor telnetPort
backup.sh:
oben zusätzlich diese Variable definieren
myTelnetPW=”DEINPASSWORT”
und jedes perl /opt/fhem/fhem.pl 7072 “set FHEM…
ersetzen/ergänzen:
perl /opt/fhem/fhem.pl 7072 $myTelnetPW “set FHEM…
Ich hoffe das hilft dir/euch weiter.
Grüße Dave
Hallo Dave,
leider NEIN, ich bekomme zwar keine SSL Fehlermeldungen mehr aber die READINGS werden trotzdem nicht in den Backup dummy geschrieben.
Ich habe auf dem RaspberryPi wo FHEM läuft SSH aktiviert, hat das evtl. damit zu tun ?
Hallo Jörg,
die Anleitung ist mal wieder hervorragend. Hab mir Dein neues Buch gekauft und bin begeistert.
Ich habe mich vorhin mit dem Thema Backup beschäftigt und es funktioniert.
Das einzige an dem ich gerade verzweifle ist das ich die Readings im FHEM.Backup nicht angezeigt bekomme.
Hast Du mir einen Tip?
Gruß
Michael
Hallo,
vielen Dank für die tolle Anleitung. Ich verzweifelke leider ein wenig. Zum einen sagt mit FHEM das Backup sei vorhanden, allerdings scheint die Datei nicht im Ordner zu landen. Zum anderen klappt das mounten nicht CIFS würde nicht unterstützt, was ich ich in meiner Synology abver eingestellt habe. Hast Du eventuell eine Idee?
Danke und viele Grüße
Thorsten
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 4.720/4.720/4.720/0.000 ms
erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: ///volume1/backup /Q/backup cifs username=,password=,iocharset=utf8,sec=ntlm 0 0
mountComplete: ///volume1/backup /Q/backup cifs
…
/etc/fstab: Eintrag bereits vorhanden: ///volume1/backup /Q/backup cifs username=,password=,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Hallo,
danke für die gute und ausführliche Anleitung. Habe es manuell getest und es scheint zu funktionieren. Jedoch wird immer nur das aktuelle Backup gespeichert und direkt wieder überschrieben. Wo kann ich die Anzahl der zu speichernden Backups anpassen? Auf deinem Bild von deinem Server ist ja eine Historie zuerkennen.
Danke!
Hallo Zusammen,
mit Interesse habe ich soeben dies umgesetzt.
Ich habe aber folgendes Problem:
Sobald ich die Zeilen in /etc/sudoers eintrage, habe ich keinen Zugriff mehr per Web auf FHEM. Putty geht.
fhem ALL=(ALL) NOPASSWD: ALL
oder
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh
Lösche ich die Zeilen wieder, geht es nach dem Neustart wieder.
Fhem läuft, alle Logs laufen weiter, nur die Weboberfläche geht nicht mehr.
Könnte ich zum Besipiel auch LOG Dateien mit in dem shell script inkludieren, damit die dann einzeln und separat auf die NAS geschoben werden ?
oder macht es da Sinn dann direkt eine LOG Datei auf der NAS anzulegen und fortzuschreieben?
dann wäre die Frage wie 🙂
Hallo,
ich habe den Scrips so wie in der Anleitung beschrieben erstellt.
Alles funktioniert soweit auch gut.
Nur wenn ich die max. Anzahl Backups auf 10 begrenzen möchte, wird immer das aktuelle Backup, das gerade erstellt wurde, gelöscht und nicht das älteste.
Woran kann das liegen?
Oder was muss geändert werden?
Ich kenne mich leider nicht Perl aus.
Und warum wird die eine Meldung “mountComplete: … “so oft wiederholt?
Auszug aus dem Logfile.
2017.01.30 05:00:00 3: FHEMBackupOn return value: -1
/fhem-backup bereits vorhanden
PING 192.168.178.1 (192.168.178.1) 56(84) bytes of data.
64 bytes from 192.168.178.1: icmp_seq=1 ttl=64 time=0.440 ms
— 192.168.178.1 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.440/0.440/0.440/0.000 ms
192.168.178.1 erreichbar
/Q/fhem-backup bereits vorhanden
/Q/fhem-backup leer, Mounten starten
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.178.1/fritz.nas\USBDISK3-0-01\fhem-backup /Q/fhem-backup cifs username=raspberry,password=raspberry,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
/Q/fhem-backup//192.168.178.60 existiert bereits
170130_050000_fhem_backup.tar.gz (180 MB) wird in den Backupordner verschoben
11 Backups vorhanden – nur 10 aktuelle Backups werden vorgehalten – 1 Backups werden gelöscht
Mount wieder unmounten
Ende Log:
Gruß Jörg
Hallo,
ich muss meine Aussage über das Löschen vom aktuellen Backup wiederrufen.
Ich habe manuell alte Backup gelöscht, damit ein aktuelle erhalten bleibt und manuell das Backup destartet.
Nach dem es fertig war, habe ich wieder auf das NAS Laufwerk geschaut und nun habe 2 Backups vom 30.01.17, das was ich gerade erstellt habe und das automatisch von heute früh.
Vorher hatte ich nur Backups bis zum 29. gesehen und bin davon ausgegangen, dass das neu gelöscht wurde.
Gruß Jörg
Super funktion
Ich habe mir beim GMX kostenlosen Speicher eingerichtet 2GB und den als Online Speicher in der fritz.box angebunden so das meine Backups in der Cloud abgelegt werden.
Guten Abend!
Erstmal ein großes Lob für den Blog … hier verbringe ich aktuell eine Menge Zeit. Die restliche Zeit geht dann noch mal für das Umsetzen drauf und natürlich beim Probleme lösen. Und hier komme ich dann auch gleich zu meinem.
Habe alles wie oben beschrieben umgesetzt und am Ende mein Synology DS214play NAS eingebunden. Soweit so gut, aber …
… ich bekomme bei den “Reading” nur eine Zeile gezeigt und keine Details.
… die Backup Files kommen nicht auf meinem NAS an.
Hier der Auszug aus dem Log:
/backup bereits vorhanden
PING 192.168.178.27 (192.168.178.27) 56(84) bytes of data.
64 bytes from 192.168.178.27: icmp_req=1 ttl=64 time=0.597 ms
— 192.168.178.27 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.597/0.597/0.597/0.000 ms
192.168.178.27 erreichbar
/Q/backup bereits vorhanden
/Q/backup nicht leer, kein Mounten notwendig
/Q/backup/rpi/fhem/192.168.178.25 existiert bereits
170421_164103_fhem_backup.tar.gz (34 MB) wird in den Backupordner verschoben
Mount wieder unmounten
umount: /Q/backup: not mounted
Auf dem RasPi sind die *gz-Files da und auch so, wie sie auf dem NAS auftauschen sollten. Nur hier, wie gesagt, ist der Ordner leer.
Würde mich freuen wenn einer einen Tipp hat (der mit dem Telnet Port war es leider nicht).
Danke und Grüße
Heinz
Was mache ich falsch, wenn nicht gewartet wird, bis das Backup fertig ist? Die Datei wird viel zu früh verschoben, während das Backup noch erstellt wird.
Weiterhin wird die Ausgabe im Log nicht mehr unterdrück mitteld &>/dev/null
wenn ich allerdings beim tar befehl das v weglasse, dann wird die Ausgabe unterdrückt.
hab den Fehler gefunden, hatte beim Kopieren eine Zeile verloren 🙂
Hat jemand schon ein Script mit CRFS Token?
Hi,
Daran habe ich auch Interesse, da es in FHEM leider keine Rückmeldung vom Script gibt.
LG
Hallo Jörg,
klasse, vielen Dank für die Bereitstellung des Skripts.
Grundsätzlich funktioniert bei mir das Backup – jedoch nur einmalig und nicht automatisiert jeden Morgen.
Hast Du nen Tipp für mich?
Hallo Jörg,
ich bekomme seit nun mehr 1 Monat keine automatischen Backups mehr erstellt und leider erst jetzt dazu mal den Fehler zu reporten. Folgendes erhalte ich nach manueller Ausführung des Backup Skriptes auf meinem RPi:
/Q/backup leer, Mounten starten
mountComplete: //192.168.178.100/backup /Q/backup cifs username=*****,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.100/backup /Q/backup cifs username=*****,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.100/backup /Q/backup cifs username=*****,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.100/backup /Q/backup cifs username=*****,password=*****,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.100/backup /Q/backup cifs username=*****,password=*****,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.178.100/backup /Q/backup cifs username=*****,password=*****,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error(5): Input/output error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Hast du vielleicht einen Tipp, wie ich das Problem eingrenzen und beheben kann?
Ich habe mal das sec=ntlm durch sec=ntlmv2 getauscht. Aber danach erhalte ich nach wie vor folgende Fehler:
mount error(5): Input/output error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Ein manueller mount mittels folgendem Befehl, schlug auch fehl:
sudo mount -t cifs //IPAdresseQNAP/backup /Q/backup/ -o username=Benutzer,password=*****,sec=ntlmv2
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Hier scheint also generell ein Thema mit dem mounten vorzuliegen?!
QNAP NAS ist pingbar. Auch ein Reboot des Raspberry brachte keine Verbesserung.
Lässt sich die Freigabe denn bspw. von einem Windows PC über den “Arbeitsplatz” einbinden? Wenn das nicht funktioniert, ist ja evtl. die CIFS-Freigabe im QNAP nicht mehr richtig konfiguriert. Evtl. in der Zwischenzeit ein NAS-Update gemacht?…
Grüße
Jörg
Hallo Jörg,
leider ist mir deine Antwort erst eben aufgefallen. Ich habe noch mal in den Logfiles meines QNAP nachgeschaut und ja, am 19.04 habe ich die letzte Pushover von meinem Backup erhalten und an dem Tag wurde d as NAS auf Version 4.3.3 geupdated :/
Habe leider kein Windows Rechner zum Testen aber auf meinem Mac kann ich ohne Probleme auf das Freigabeverzeichnis zugreifen. Nun ist die Frage was sich da geändert hat bzw. was ich ggf. wieder anpassen muss.
Vielleicht jemand ein ähnliches Problem mit einem QNAP?
Gruß
sTaN
Hallo noch mals,
ich konnte das Problem lösen. Nachdem ich diverse Threads bzgl. QNAP Update 4.3.3 und Samba gefunden habe (u.a.: dieser Thread https://forum.qnap.com/viewtopic.php?f=185&t=131973) und auf das Samba Vulnerability aufmerksam wurde (https://www.qnap.com/en/support/con_show.php?cid=119) habe ich die installierte Samba Version am QNAP mittels Befehl “smb2status” ermittelt und folgende Ausgabe erhalten:
smbd (samba daemon) Version 4.4.14
smbd (samba daemon) is running.
max protocol SMB 3.0 enabled.
Testweise habe ich dem Mountbefehl einfach mal vers=3.0 mitgeliefert und siehe da der Mount hat funktioniert:
sudo mount -t cifs //IPQNAPNAS/backup /Q/backup/ -o username=Benutzer,password=XXX,sec=ntlmv2,vers=3.0
Dies habe ich dann im backup.sh Skript ebenfalls erweitert und nun wird wieder gesichert!
Gruß
sTaN
Hallo sTaN,
wie hast Du die backup.sh geändert damit es nach dem update auf 4.3.x wieder funktioniert?
Gruß Detlef
@Detlef Plettau
Das hatte er doch beschrieben…
—snip—
Testweise habe ich dem Mountbefehl einfach mal vers=3.0 mitgeliefert und siehe da der Mount hat funktioniert:
sudo mount -t cifs //IPQNAPNAS/backup /Q/backup/ -o username=Benutzer,password=XXX,sec=ntlmv2,vers=3.0
Dies habe ich dann im backup.sh Skript ebenfalls erweitert und nun wird wieder gesichert!
—snap—
Also im backup.sh Script vers=3.0 hinzufügen und testen
Also irgendwer steht bei mir auf der Synapse.
Ich habe im Script backup.sh die Zeile 189
>>mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0″<>mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlmv2,vers=3.0 0 0″<<
getauscht, aber es klappt nicht.
Gruß
Detlef
@Detlef Plettau
Also mich wundert schonmal dass du 189 Zeilen hast. Das Script hat im Standard grad mal 130 Zeilen.
Prinzipiell hast Du aber die richtige Zeile gefunden würde ich mal sagen.
Du hast das so übernommen wie der Kollege das angegeben hatte und hast auch gleich sein ntlmv2 mit übernommen. Ich weiss nicht ob es ggf. daran liegt.
Deswegen probier mal bitte:
Variante 1)
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,vers=3.0,sec=ntlm 0 0″
Wenn das nicht geht, dann…
Variante 2)
a) erstmal per Putty auf deinen FHEM Rechner, dann mal versuchen manuell zu mounten
also per:
sudo mount -t cifs //IPQNAPNAS/backup /Q/backup/ -o username=Benutzer,password=XXX,vers=3.0,sec=ntlm 0 0
Wenn das schon nicht geht, dann wird das auch im Script nicht gehen.
Fehlersuche ist dann per
sudo mount -t cifs //IPQNAPNAS/backup /Q/backup/ –verbose -o username=Benutzer,password=XXX,vers=3.0,sec=ntlm 0 0
Und ggf. im smb.log des FHEM Rechners, und ggf. auch auf dem QNAP schauen ob man mehr infos rausbekommt.
Viel Erfolg!
@Holger,
so läuft wieder. Ich muste die /etc/fstab aufräumen, da der mount mit verschiedenen Varianten dort abgelegt war. Bei mir läuft die Samba Version 2.1.
Und das meine List so viele Zeilen hat lag daran, das ich sie doppelt in den editor kopiert hatte 🙁
Detlef
Hallo Jörg,
super Spript; läuft (mit ein paar Anpassungen) prima von Raspberry 3 auf Synology 415p.
Ich würde am liebsten beim täglichen Backup nur eine einzeilige Meldung im Erfolgsfall bekommen. Alle anderen Meldungen hab ich deaktivieren können. Aber an “FHEMBackupOn return value: -1” scheitere ich. Wo wird die erzeugt? Wie kann man die unterdrücken?
Hallo,
ich habe meinen Speicher an der FritzBox ausgetauscht. Den Namen habe ich angepasst, das Backup wird auch ausgeführt, doch irgendwo kommt noch der alte Speicherort vor.
Wo kann ich das ändern?
Neuer Ort: ASMedia-AS2115-01
Alt: Hitachi …
mountComplete: //192.168.2.1/fritz.nas/ASMedia-AS2115-01 /Q/backup cifs username=Torsten,password=3999571,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.2.1/fritz.nas/ASMedia-AS2115-01 /Q/backup cifs username=Torsten,password=3999571,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount: wrong fs type, bad option, bad superblock on //fritz.nas/Hitachi-HTS541680J9SA00-01/FhemPi,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
Hallo Jörg,
erstmal Danke für die Anleitung, seit gut 6 Monaten läuft alles reibungslos.
Heute habe ich die Daten in der Backup.sh Datei geändert, um die Backups auf einem neuen Synology NAS zu speichern. Zuerst mit meinem admin Account, dann mit einem extra fhem (rpi) account, der nur Zugriff auf den Backup Ordner hat.
Zuerst sah ers so aus, als ob alles funktioniert, doch nach mehreren Backups stellt sich ein Muster ein, was ich nicht nachvollziehen kann:
-Backup 1 wird auf dem Synology NAS vom Benutzer fhem gespeichert
-Backup 2 wird auf dem Synology NAS von meinem admin Benutzer gespeichert
-Backup 3 wird auf meinem alten NAS gespeichert
-Backup 4 wird dann wieder auf dem Synology NAS vom Benutzer fhem gespeichert usw.
Die Reihenfolge bleibt immer gleich, die Statusmeldungen vom Raspberry auch. Ein Neustart des Raspberry ändert daran nichts.
Hier die Statusmeldungen von Backup 1-3, danach wiederholt sich das ganze einfach wieder:
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.139.224 (192.168.139.224) 56(84) bytes of data.
64 bytes from 192.168.139.224: icmp_seq=1 ttl=64 time=0.398 ms
— 192.168.139.224 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.398/0.398/0.398/0.000 ms
192.168.139.224 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.139.224/backup /Q/backup cifs username=rpi,password=******,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
username specified with no parameter
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
/Q/backup/raspberry/fhem/192.168.139.243 existiert bereits
170729_121744_fhem_backup.tar.gz (38 MB) wird in den Backupordner verschoben
Mount wieder unmounten
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.139.224 (192.168.139.224) 56(84) bytes of data.
64 bytes from 192.168.139.224: icmp_seq=1 ttl=64 time=0.431 ms
— 192.168.139.224 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.431/0.431/0.431/0.000 ms
192.168.139.224 erreichbar
/Q/backup wird erstellt
/Q/backup nicht leer, kein Mounten notwendig
170729_132401_fhem_backup.tar.gz (38 MB) wird in den Backupordner verschoben
Mount wieder unmounten
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.139.224 (192.168.139.224) 56(84) bytes of data.
64 bytes from 192.168.139.224: icmp_seq=1 ttl=64 time=0.377 ms
— 192.168.139.224 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.377/0.377/0.377/0.000 ms
192.168.139.224 erreichbar
/Q/backup bereits vorhanden
/Q/backup nicht leer, kein Mounten notwendig
/Q/backup/raspberry/fhem/192.168.139.243 existiert bereits
170729_132535_fhem_backup.tar.gz (38 MB) wird in den Backupordner verschoben
Mount wieder unmounten
Hallo zusammen,
nach dem mein Backup Skript seit ein paar Wochen nicht mehr gelaufen ist, habe ich es gerade neu erstellt.
Die Backup Datei wird auf meiner Qnap erstellt, allerdings erhalte ich im Log die folgende Fehlermeldung:
——————————————
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.408/0.408/0.408/0.000 ms
/etc/fstab: Eintrag wird ergänzt: //192.168.178.40/backup /mnt/nas cifs rw,nounix,user=xxx,password=xxx 0 0
{“status”:1,”request”:”e6f145a9-14cb-4e9c-9b46-87e78d8fba10″}/opt/fhem/FHEM/backup.sh: Zeile 276: -A: Kommando nicht gefunden.
0
——————————————
Die Zeile 276 ist im Skript diese:
backupsCurrent=ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”
Hat mir jemand einen Tip?
Gruß
Michael
Hi Michael,
Die Zeile hat spezielle hochkomma im Standard.
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
Und wenn dies nicht die Lösung ist, dann schau mal ob Du ein einfaches
ls -A ausführen kannst.
dei option -A ist eigentlich:
-A, –almost-all
do not list implied . and ..
und sollte gehen. Das wird bei Dir aber eben angemeckert.
Aber ich denke wegen der Stringaubereitung und den fehlenden `Zeichen
Hallo Leute,
bekomme es nicht zum laufen…
Hat jemand evtl. eine Idee? Der QNAP Pfad meines TVS-463 sollte eigentlich richtig sein.
pi@FHEM:~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.178.24 (192.168.178.24) 56(84) bytes of data.
64 bytes from 192.168.178.24: icmp_seq=1 ttl=64 time=0.407 ms
— 192.168.178.24 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.407/0.407/0.407/0.000 ms
192.168.178.24 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.178.24/share /Q/backup cifs username=admin,password=xxxx,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Hat jemand eine Idee?
habe den fehler gefunden 🙂 Trotzdem Danke
Hallo Jörg, alles funktioniert! Bis auf das.
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
der Dummy bekommt keine Werte zugewiesen und bleibt bei “on” stehen.
Mein Log:
2017.09.09 15:33:34 3: FHEMBackupOn return value: -1
/backup wird erstellt
PING 192.168.1.120 (192.168.1.120) 56(84) bytes of data.
64 bytes from 192.168.1.120: icmp_seq=1 ttl=64 time=0.551 ms
— 192.168.1.120 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.551/0.551/0.551/0.000 ms
192.168.1.120 erreichbar
/mnt/FHEMBackup bereits vorhanden
/mnt/FHEMBackup leer, Mounten starten
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.1.120/FHEMBackup /mnt/FHEMBackup cifs username=fhem,password=nk3s9zh,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
/mnt/FHEMBackup//192.168.1.123 existiert bereits
170909_153335_fhem_backup.tar.gz (49 MB) wird in den Backupordner verschoben
Mount wieder unmounten
Hallo allerseits,
trotz der tollen Anleitung bekomme ich leider zwei Fehlermeldungen, auch wenn ich die backup.sh direkt auf dem Raspberry starte.
Hier die Meldung:
/opt/fhem/FHEM/backup.sh: Zeile 125: Dateiende beim Suchen nach “’ erreicht.
/opt/fhem/FHEM/backup.sh: Zeile 131: Syntax Fehler: Unerwartetes Dateiende.
Kann mir bitte jemand weiterhelfen?
Besten Dank
schönen Sonntag
awa
Hallo
Kleine Anfänger Frage.
Ich habe bemerkt das die automatischen Backups seit August nur noch 0KB groß sind gegenüber vorher 120Mb (bei mir natürlich).
Wenn ich von Hand eingebe (sudo /opt/fhem/FHEM/backup.sh) ist das Backup 3KB groß statt vorher 120Mb (bei mir natürlich).
Das FHEM Logfile ist auch leer!
Habe ich da einen Fehler bei mir?
Hallo
Ein neuer Versuch.
Das Backup hat bis zum 01.08.2017 super geklappt!(immer so 120 MB)
Ich habe nichts verändert!
Seit dem 02.08.2017 nur noch 0KB und Fehler : cp: „/Q/backup/rpifhem/192.168.2.150/171010_132655_fhem_backup.tar.gz“ konnte nicht geschlossen werden: Eingabe-/Ausgabefehler
——————————————————————————————
Mit “sudo /opt/fhem/FHEM/backup.sh” folgendes Ergebnis:
/backup bereits vorhanden
PING 192.168.2.14 (192.168.2.14) 56(84) bytes of data.
64 bytes from 192.168.2.14: icmp_seq=1 ttl=64 time=0.391 ms
— 192.168.2.14 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.391/0.391/0.391/0.000 ms
192.168.2.14 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxxx,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag wird ergänzt: //192.168.2.14/Volume_1/backup /Q/backup cifs username=HausRaspberry,password=xxxxxxxx,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
/Q/backup/rpifhem/192.168.2.150 existiert bereits
171010_132655_fhem_backup.tar.gz (126 MB) wird in den Backupordner verschoben
cp: „/Q/backup/rpifhem/192.168.2.150/171010_132655_fhem_backup.tar.gz“ konnte nicht geschlossen werden: Eingabe-/Ausgabefehler
21 Backups vorhanden – nur 10 aktuelle Backups werden vorgehalten – 11 Backups werden gelöscht
Mount wieder unmounten
——————————————————————————————
Auf dem NAS : “192.168.2.150/171010_132655_fhem_backup.tar.gz – 0KB
——————————————————————————————
Einstellungen backup.sh
#!/bin/bash
mountIp=”192.168.2.14″
mountDir=”Volume_1/backup”
mountUser=”HausRaspberry”
mountPass=”xxxxxxxxxxx”
mountSubDir=”rpifhem”
localMountPoint=”/Q/backup”
#optional
backupsMax=”10″
localBackupDir=”/backup”
pushoverUser=””
pushoverToken=””
###################################
Könnt ihr mir da bitte weiter helfen, wo liegt mein Fehler,wo muß ich suchen?
Gruß Ralf
Problem gelöst, läuft wieder!
Gruß Ralf
Hallo Ralf,
ist zwar schon ein paar Tage alt, aber vielleicht gibt es ja trotzdem jemanden, der das Thema kennt.
Du schreibst leider nur “Problem gelöst”, aber wie…?
Ich sitze schon seit mehrere Stunden an diesem Problem.
Die ersten paar geschedulten Backups werden auch mit derselben Fehlermeldung, aber anscheinend trotzdem komplett auf das NAS kopiert. Danach kommen nur noch 0 Byte große Dateien an.
Wie hast Du das Thema in den Griff bekommen?
Hallo zusammen,
ich habe das Script in meine Fhem Lösung eingebaut und es erstellt mir auch die Backups auf meine NAS.
Allerdings verändert das Script meine /etc/fstab Datei und somit startet Debian nicht mehr korrekt.
Nach dem das Script gelaufen ist sieht meine fstab wie folgt aus:
//192.168.178.40/backup /mnt/nas cifs rw,nounix,user=xxxxx,password=xxxxx $
Eigentlich sollte aber zum korrekten starten von Debian folgendes drin stehe:
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
Habe ich hier einen Denkfehler oder wo liegt das Problem?
Gruß
Michael
Hallo,
würde die Pushbenachrichtigung gerne mit Pushbullett machen.
Bin mir aber nicht sicher wie Befehle in dem Script gändert werden müssen.
Bitte um einen Tipp.
Sonst läufts gut.
vielen Dank für das Script, läuft 1a
Ich habe das Script mal ein wenig angepasst.
Somit kann man auch mehrere Ordner mit ins Backup Aufnehmen.
Dazu habe ich die SMB Credentials in eine Datei ausgelagert.
#!/bin/bash
mountIp=”192.168.1.3″
mountDir=”_backup”
mountOptions=”/etc/.smbcredentials”
mountSubDir=”11_fhem/2_fhem”
localMountPoint=”/media/backup-server1″
backupDIR=”/opt/fhem /var/lib/homebridge”
#optional
backupsMax=”0″
localBackupDir=”/backup”
pushoverUser=”UserToken”
pushoverToken=”PushOver Token”
###################################
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”
if [ ! -e “$localBackupDir” ]
then
echo “$localBackupDir wird erstellt”
mkdir -p “$localBackupDir”
else
echo “$localBackupDir bereits vorhanden”
fi
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” “/home/hs-server-admin/.homebridge”&>/dev/null
if ! ping -c 1 $mountIp
then
echo “$mountIp nicht erreichbar, stop”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=ACHTUNG: Backup konnte nicht erstellt werden Mount nicht erreichbar” https://api.pushover.net/1/messages.json
exit
else
echo “$mountIp erreichbar”
fi
localIp=$(ip a s|sed -ne ‘/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}’)
if [ ! -e “$localMountPoint” ]
then
echo “$localMountPoint wird erstellt”
mkdir -p “$localMountPoint”
else
echo “$localMountPoint bereits vorhanden”
fi
if [ “$(ls -A $localMountPoint)” ]
then
echo “$localMountPoint nicht leer, kein Mounten notwendig”
else
echo “$localMountPoint leer, Mounten starten”
vorhanden=”0″
while read line
do
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs $mountOptions 0 0″
echo “mountComplete: $mountComplete”
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
then
echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
vorhanden=”1″
break
fi
done > “/etc/fstab”
fi
echo “Mounts werden aktualisiert”
mount -a
sleep 3
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
then
mkdir -p “$localMountPoint/$mountSubDir/$localIp”
else
echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
fi
find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
do
fileSize=”0″
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*\/}
echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
then
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
fi
#mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
rm “$file”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
done
else
echo “Mounten hat anscheinend nicht geklappt, skip.”
exit
fi
#Löschen alter Backups
if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
then
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ “$backupsDelete” -gt “0” ]
then
echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
else
echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
fi
else
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
fi
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup wurde erfolgreich erstellt und verschoben” https://api.pushover.net/1/messages.json
Guten Abend, kurze Frage. Wie muss ich das Skript denn anpassen, wenn ich keine pushover sonder eine Telegram Benachrichtigung erhalten möchte?
Hallo Jörg,
Dein Superscript benutze ich schon über ein Jahr! Es funktionierte bisher bestens.
Nun habe ich gestern von Jessie auf Stretch (RPI 3) gewechselt…. leider funktioniert das Script nicht mehr 🙁
Folgende Meldungen bekomme ich wenn ich das Script starte:
pi@raspberrypi-FHEM:~ $ sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.0.67 (192.168.0.67) 56(84) bytes of data.
64 bytes from 192.168.0.67: icmp_seq=1 ttl=64 time=0.403 ms
— 192.168.0.67 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.403/0.403/0.403/0.000 ms
192.168.0.67 erreichbar
/Q/BackUp bereits vorhanden
/Q/BackUp leer, Mounten starten
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
pi@raspberrypi-FHEM:~ $
habe schon an diversen Orten nachgelesen aber nichts brauchbares gefunden.
Hast Du eine Idee an was es liegen könnte?
Lieber Gruss
Turi
Ich hatte selbiges Problem, habe im Script die SAMBA-Version mitgegeben.
Jetzt steht in der /etc/fstab:
//192.168.0.67/BackUp /Q/BackUp cifs username=user,password=passwort,vers=1.0,iocharset=utf8,sec=ntlm 0 0
Im Script habe ich es wie folgt angepasst:
username=$mountUser,password=$mountPass,vers=1.0,iocharset=utf8,sec=ntlm 0 0″
Vermutlich geht auch eine höhere Version als 1.0 – allerdings sollte dies bei diesen kleinen Dateien nicht tragisch sein.
Liebe Grüße
Hi Turi,
kann es sein, dass du im Passwort Sonderzeichen benutzt? Unter Jessie musste ich Sonderzeichen noch maskieren. Unter Stretch fällt die Maskierung der Sonderzeichen weg.
Gib im Terminal doch einfach mal folgendes ein:
(sudo) mount.cifs //192.168.0.67/BackUp /Q/BackUp cifs username=user,iocharset=utf8,sec=ntlm
Jetzt wird das Kennwort abgefragt. Gib es mal ein und schau, ob es dann klappt.
Danach kannst du das Kennwort mit Sonderzeichen einfach im Script hinterlegen.
Das SCript sollte jetzt wieder durchlaufen!
Gruß
CarlMcCoy
Hi CarlMcCoy,
danke für Deine Antwort. Es lag nicht am Passwort…. es war irgend ein Problem mit meiner Installation auf dem Rpi… habe alles nochmals neu aufgesetzt nach dieser Anleitung und danach lief es perfekt durch.
glg Turi
Hi CarlMcCoy,
danke für Deine Antwort. Es lag nicht am Passwort…. es war irgend ein Problem mit meiner Installation auf dem Rpi… habe alles nochmals neu aufgesetzt nach dieser Anleitung und danach lief es perfekt durch.
glg Turi
Für alle die das Problem mit den Readings (setreading) haben…
Einfach im “Device” —-> “allowed_telnetPort” unter “Everything” links im Menü zu finden, den Eintrag “Password” rauswerfen bzw “GlobalPassword” nutzen.
Ich habe bei mir Password gelöscht.
Siehe: https://forum.fhem.de/index.php?topic=71076.0
mfg…
Hallo, tolle Anleitung !
Leider bekomme ich seit kurzen einen Mount fehler:
(lief vorher einwandfrei)
pi@RaspberryFHEM:~ $ sudo mount -a
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mein Mount in der fstab sieht so aus:
//192.168.1.20/01_backups /Q/backup cifs username=xxxxx,password=xxxxx,iocharset=utf8,sec=ntlm 0 0
hat sich da was geändert ?
Gruß Chris
Habe die gleiche Problematik
Fehler gefunden !
https://forum.fhem.de/index.php/topic,86924.0.html
sec=ntlm zu sec=ntlmssp ändern !
Hallo,
vielleicht kann mir jemand helfen. Alles lief einwandfrei, ich habe nur einen neuen CUBIE mit Stretch jetzt als System laufen.
Folgendes erscheint bei mir, aber auf dem NAS habe ich keinen Dateien mehr
Ich komme einfach nicht weiter:
/backup bereits vorhanden
PING 192.168.178.24 (192.168.178.24) 56(84) bytes of data.
64 bytes from 192.168.178.24: icmp_seq=1 ttl=64 time=3.04 ms
— 192.168.178.24 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.046/3.046/3.046/0.000 ms
192.168.178.24 erreichbar
/mnt/backup bereits vorhanden
/mnt/backup nicht leer, kein Mounten notwendig
180423_075012_fhem_backup.tar.gz (112 MB) wird in den Backupordner verschoben
180423_073726_fhem_backup.tar.gz (112 MB) wird in den Backupordner verschoben
2 Backups vorhanden – bis 5 aktuelle Backups werden vorgehalten
Mount wieder unmounten
umount: /mnt/backup: not mounted
root@cubietruck:/mnt/backup#
In neueren Versionen von Raspbian (Stretch) scheint es Änderungen am Mount-Befehlen gegeben zu haben. Die folgende Zeile führt zu einem Fehler:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0″
Schuld ist entweder iocharset oder sec. Durch das Weglassen beider Parameter funktioniert das Mounten mit dem Befehl mount -a wieder.
Viele Grüße,
Sebastian
das hier hat geholfen, Danke Chriss!
sec=ntlm zu sec=ntlmssp ändern
Hallo,
auch dieser Tip hat bei mir nicht funktioniert.
Bis vor kurzem lief alles, nach einem Aufsetzen des Raspi nun nicht mehr.
Habe die obige Anleitung nun mehrfach durchgeführt.
Fehlermeldung:
/backup bereits vorhanden
PING 192.168.178.25 (192.168.178.25) 56(84) bytes of data.
64 bytes from 192.168.178.25: icmp_seq=1 ttl=64 time=0.578 ms
— 192.168.178.25 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.578/0.578/0.578/0.000 ms
192.168.178.25 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag wird ergänzt: //192.168.178.25/home /Q/backup cifs username=XXXXX,password=XXXXX,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Die Zeile
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0″
hatte ich schon entsprechend geändert:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass 0 0″
Aber das funktioniert auch nicht.
Hat da noch jemand zufällig Rat?
Vielen Dank
Dirk
Hi Dirk,
füge mal in Zeile 58 noch “,vers=1.0″ ein.
Zeile sieht dann so aus:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm,vers=1.0 0 0”
damit sollte es wieder gehen
Hey,
Super Sache.
Funktioniert gut.
Ich habe aber eine Fehlermeldung im Log
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Was kann ich da machen?
Einfach mal die Kommentare über dir lesen, wurde schon mehrfach beantwortet!
Hallo zusammen,
wollte das Scrip auf meinem neu aufgesetzen RPi3 mit Stretch wieder nutzen beim Testen der backup.sh über Putty bekomme ich allerdings folgendes Ergebnis
/opt/fhem/FHEM/backup.sh: Zeile 130: Dateiende beim Suchen nach `”‘ erreicht.
/opt/fhem/FHEM/backup.sh: Zeile 131: Syntax Fehler: Unerwartetes Dateiende.
Ich würde mich freuen wenn hier einer eine Idee hat, im NEtz habe ich leider nichts dazu gefunden was mir weitergeholfen hat.
Vielleicht einen Editor benutzt, der die Formatierung gekillt hat?
Bin in dem Thema ansonsten gar nicht mehr wirklich drin, sorry.
Danke hab den Fehler beim anpassen wegen Stretch ein “ gelöscht jetzt läuft es 🙂
Hi Gerhard,
muss denn beim Script hier bei der Nutzung vom Stretch etwas angepasst werden? Falls ja, von ewlchem ” im Script sprichst du genau?
Grüße
Jörg
Hallo Jörg,
hatte die Info über deine Antwort nicht bekommen.
Bei mir war es meine nur ein Copy Paste Fehler wegen falschen Editor….
Ich kann das Script so wie es bei mir jetzt läuft aber Dir gerne noch schicken oder hier reinstellen?!
Gruß
Gerhard
mit diesen 2 Änderungen funktioniert es wieder problemlos und ohne Fehlermeldungen:
bei nachstehender Zeile im Script:
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
Hochkommas setzen:
if [ ‘echo “$line” | grep -c “$mountComplete”‘ != 0 ]
und in mountComplete den Eintrag sec=xxx entfernen.
Danke für das Script und LG
Danke!!! Das löst das Problem!
Huhu Jörg,
ich wünsche dir ein frohes neues Jahr. Bin auf deine Anleitung(en) gestossen. Habe leider bei der Umsetzung ein Problem. Folgende Meldung wird bei mir nach dem Start ausgegeben:
Can’t connect to localhost:7072
/backup bereits vorhanden
PING 192.168.1.110 (192.168.1.110) 56(84) bytes of data.
64 bytes from 192.168.1.110: icmp_seq=1 ttl=64 time=1.43 ms
— 192.168.1.110 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.431/1.431/1.431/0.000 ms
192.168.1.110 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
mountComplete: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.1.110/nas/FHEM/backup /Q/backup cifs username=admin,password=xxx,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
Telenet habe ich installiert. Klappt aber nicht. Kannst du mir helfen?
VG,
Jörg
Hallo! Du musst in der fhem.cfg den Eintrag “define telnetPort telnet 7072 global” definiert haben.
Beste Grüße,
Benjamin
Hat funktioniert. Danke
Hallo,
danke für diesen tollen Blog und den Artikel. Das Script läuft jetzt bei mir! Super Arbeit!
Initial wurden jetzt allerdings 8 Backup Files erstellt. Ist das normal? Welches müsste ich den im Zweifel bei Bedarf zurück spielen?
Gruß
Udo
Hi Udo,
vielleicht aus Vorfreude gleich mehrfach auf den Backup-Button gedrückt? 😀 Sollte eigentlich nicht so sein, aber so what…
Vergleiche mal die Dateigrößen der Files. Sollten dann eigentlich fast auf das Byte gleich groß sein, sofern die Sicherungen kurz nacheinander gestartet wurden.
Würde – sofern nahezu identisch – natürlich immer das aktuellste Backup nehmen…
Grüße
Jörg
Hallo Jörg,
ich glaube es war tatsächlich, weil ich mehrmals per Terminal das Skript gestartet habe, weil es Anfangs nicht klappt. Nach dem achten mal hatte ich wohl den Fehler 🙂
Hätte jetzt erwartet, dass bei fehlerhafter Ausführung der Job damit auch aus der Warteschlange ist.
Aber besser zu viele Backups als keines. Jetzt läuft es täglich einmal!
Gruß
Udo
Hallo Jörg
ich habe dein Backup_Script schon lange erfolgreich im Einsatz… Danke dafür. Nun eine Frage: Kann ich folgende Fehlermeldungen ignorieren?
{“status”:1,”request”:”c6f91082-7505-4018-b162-cae7051f8104″}190108_214610_fhem_backup.tar.gz
und
mount error: could not resolve address for 10.0.1.18:: Unknown error
–> Es klappt eigentlich, sprich die Backups werden erstellt. Aber es ist mir doch nicht ganz koscher… Danke für deine Antwort
lg c
——
hier noch der gesamte LOG:
rtt min/avg/max/mdev = 0.710/0.710/0.710/0.000 ms
10.0.1.18 erreichbar
/Backup/FHEM bereits vorhanden
/Backup/FHEM leer, Mounten starten
mountComplete: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
mountComplete: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
mountComplete: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
mountComplete: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
mountComplete: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
mountComplete: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
/etc/fstab: Eintrag bereits vorhanden: //10.0.1.18/BackupFHEM /Backup/FHEM cifs username=pi,password=meinpasswort,iocharset=utf8
Mounts werden aktualisiert
mount error: could not resolve address for 10.0.1.18:: Unknown error
/Backup/FHEM//10.0.1.71 existiert bereits
190104_010000_fhem_backup.tar.gz (55 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”cfa86024-b41a-4083-a41a-7ae8ecfe9e4e”}190108_010000_fhem_backup.tar.gz (61 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”0953aa65-ef5c-453b-863e-7f9452b3866c”}181231_010000_fhem_backup.tar.gz (57 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”c20e7e0c-fa27-456e-b2cf-b9c061899591″}190105_010000_fhem_backup.tar.gz (56 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”bb00a8c5-a5c3-4846-a4a4-26e2f1f4ffbb”}190106_010000_fhem_backup.tar.gz (59 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”20d9e3be-76ed-4eb1-af76-b3231ceaa88d”}190103_010000_fhem_backup.tar.gz (61 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”d0985734-ec07-47cc-bdf9-28b5b197429c”}181230_010000_fhem_backup.tar.gz (59 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”38dc3319-7dd8-465b-b474-750eecfbcb02″}190101_010000_fhem_backup.tar.gz (62 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”c6f91082-7505-4018-b162-cae7051f8104″}190108_214610_fhem_backup.tar.gz (57 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”6ebdd4c8-a900-4153-82f8-470644b4c29e”}190102_010000_fhem_backup.tar.gz (60 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”6a2bcf63-521d-4ef6-bfef-c45effa41000″}190107_010000_fhem_backup.tar.gz (60 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”49b53a02-5bfb-4d3d-87c8-7781dd01cec8″}18 Backups vorhanden – nur 10 aktuelle Backups werden vorgehalten – 8 Backups werden gelöscht
Mount wieder unmounten
Wer Telegram benutzten will muss folgendes machen:
(ist eine Quick an Dirty Lösung)
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM $localIp” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
durch
curl -X POST “https://api.telegram.org/bot[dein-BOT-token]/sendMessage?chat_id=XXXXX&text=Backup mit $fileSizeMB MB wird erstellt”
und die Zeile abändern:
#optional
backupsMax=”0″
localBackupDir=”/backup”
pushoverUser=”1″
pushoverToken=”1″
Hallo ich versuche jetzt seid mehreren Stunden dein Script zum laufen zu bekommen.
Bleibe aber immer an der selben stelle hängen. Hätte eventuell jemand einen Tipp für mich woran es liegen könnte? Die Konsole wirft immer folgendes aus:
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
/opt/fhem/FHEM/backup.sh: Zeile 3: : Kommando nicht gefunden.
/opt/fhem/FHEM/backup.sh: Zeile 17: : Kommando nicht gefunden.
/opt/fhem/FHEM/backup.sh: Zeile 29: : Kommando nicht gefunden.
/opt/fhem/FHEM/backup.sh: Zeile 33: : Kommando nicht gefunden.
/backup bereits vorhanden
/opt/fhem/FHEM/backup.sh: Zeile 49: : Kommando nicht gefunden.
Danke schon mal im vorraus
Hallo Jörg,
bei mir (rpi) ist fhem in “/opt/fhem” isntalliert.
Müsste der Restore-Befehl dann nicht
sudo tar -xvzf /tmp/160126_060205_fhem_backup.tar.gz -C /opt/fhem/
lauten?
Hi,
ich hoffe jemand kann helfen… habe bisher immer auf einen USB Stick gesichert, welcher mir erst vor kurzem abgeraucht ist. Deshalb versuche ich jetzt das Backup Script 🙂
Starte ich das Script mauell passiert folgendes:
– Im Verzeichnis /opt/fhem/backup wird das Verzeichnis rpi/fhem/ erstellt und dort wird die zuvor erstellte Backup-Datei hingeschoben.
Meine Einträge sehen so aus:
mountIp=”192.168.xx.xx” <- IP vom NAS
mountDir="fhem_backup"
mountUser="fhem"
mountPass="xxxx"
mountSubDir="rpi/fhem"
localMountPoint="/opt/fhem/backup"
#optional
backupsMax="0"
localBackupDir="/opt/fhem/backup"
pushoverUser=""
pushoverToken=""
###################################
Würde mich über Hilfe freuen.
hallo,
super Sache, dein Script. Kleine Frage:
Folgendes wird jeweils mehrfach geloggt, kann man dies auf einen Eintrag pro Logdurchgang begrenzen?
mountComplete: //10.xx.xx.xx/BackupFHEM /Backup/FHEM cifs username=xxx,password=xxxxx,iocharset=utf8,sec=ntlmssp,vers=1.0 0 0
mountComplete: //10.xx.xx.xx/BackupFHEM /Backup/FHEM cifs username=xxx,password=xxxx,iocharset=utf8,sec=ntlmssp,vers=1.0 0 0
mountComplete: //10.xx.xx.xx/BackupFHEM /Backup/FHEM cifs username=xxx,password=xxxx,iocharset=utf8,sec=ntlmssp,vers=1.0 0 0
mountComplete: //10.xx.xx.xx/BackupFHEM /Backup/FHEM cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlmssp,vers=1.0 0 0
mountComplete: //10.xx.xx.xx/BackupFHEM /Backup/FHEM cifs username=xx,password=xxx,iocharset=utf8,sec=ntlmssp,vers=1.0 0 0
mountComplete: //10.xx.xx.xx/BackupFHEM /Backup/FHEM cifs username=xx,password=xxx,iocharset=utf8,sec=ntlmssp,vers=1.0 0 0
Und noch eine Frage:
Ich kriege auch folgende Meldung. Offensichtlich wird irgenwie was falsch aufgelöst, siehe Anfang Zeile..
{“status”:1,”request”:”20dasasf8d-f325-4444c-bdasd-bbbadsfasdffasdf”}11 Backups vorhanden – nur 10 aktuelle Backups werden vorgehalten – 1 Backups werden gelöscht
Danke für die Antworten.
Lg tom
Hi,
ich weiß nicht, ob das Thema hier bereits vorkommt, hab nicht alle Beiträge gelesen, aber dir Browser-Suche hat nichts ergeben. Mein Problem war, dass mein NAS (als Sicherungsziel) im wesentlichen als Datengrab genutzt wird, nicht als Applikationsserver und deshalb typischerweise meistens ausgeschaltet ist. Zeitgesteuertes Sichern deshalb kaum möglich.
Die Lösung: Start des Backup-Scripts über ein DOIF (oder Notify), welches über die Anwesenheitserkennung der FritzBox getriggert wird (NetDevDa), welche wiederum auf die MAC-Adresse des NAS eingestellt ist.
Grüße (und vielen Dank für das tolle Script)
Stefan
Klar,
Lass einfach
define FHEMBackup at *06:00:00 set FHEM.Backup on weg
Und setze Fhem.backup auf in und das Backup startet.
Klar,
Lass einfach
define FHEMBackup at *06:00:00 set FHEM.Backup on weg
Und setze Fhem.backup auf on und das Backup startet.
Hallo,
seid bald 3Jahren läuft das script einwandfrei.
Seid ca. 2Wochen nicht mehr. Bis auf Updates von FHEM hat sich nichts geändert.
Die Backups werden gemacht und auf in den Pfad verschoben, dieser ist aber jetzt local auf dem PI.
Ich weiss momentan nicht mehr weiter, habe alles auch mal neu angelegt
sudo /opt/fhem/FHEM/backup.sh
/backup bereits vorhanden
PING 192.168.178.24 (192.168.178.24) 56(84) bytes of data.
64 bytes from 192.168.178.24: icmp_seq=1 ttl=64 time=87.9 ms
— 192.168.178.24 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 87.951/87.951/87.951/0.000 ms
192.168.178.24 erreichbar
/Q/backup bereits vorhanden
/Q/backup nicht leer, kein Mounten notwendig
191002_134552_fhem_backup.tar.gz (149 MB) wird in den Backupordner verschoben
1 Backups vorhanden – bis 5 aktuelle Backups werden vorgehalten
Mount wieder unmounten
umount: /Q/backup: not mounted
root@piFHEM:~#
Hi Dirk,
ich kann mich irren, aber ich hatte mal was ähnliches. Du möchtest ja eigentlich deine NAS Freigabe nach /Q/backup einhängen, und das ersetzt ja dann den Space auf dem Pi.
wenn du also ein cmd>mount eingibst, siehst du dann, den HDD Space deines NAS?
was gibt ein cmd>df -h aus?
Hintergrund der Frage ist, dass ich schonmal ein mounting problem gesehen habe wo das mounten fehlschlug, und dann die files auf das Einhängeverzeichnis kopiert wurden und nicht auf das NAS.
Und so wie ich das oben lese, kann er nicht un-mounten weil es ganrnicht gemounted wurde.
und der check geht nur auf das Einhängeverzeichnis und nicht nach einer expliziten Prüfung ob es sich um das NAS handelt.
ich müsste mal nachschauen wo im Script das wäre, aber schau mal ob du da nicht nach dem mount irgendwo ein sleep von 2 minuten einbauen kannst, und dann schaue mal auf cmd nach ob er nach dem mount dann wirklich das NAS eingehängt hat. Also per cmd>mount oder cmd>df -h
Und versuche mal auch per hand das NAS zu mounten.
Ich würde da so vorgehen, dass ich die Files die derzeit lokal im /Q/backup liegen erstmal web move, damit das Verzeichnis leer ist, und dann würde ich es mit dem Befehl mounten der auch im Script verwendet wird.
Und auf dem NAS würde ich dann eine Datei erstellen die z.B. 2019-10-03.txt heisst, und auf dem Pi würde ich dann schauen ob ich dieses File mit cmd>ls -la auch sehe. (achtung auf userberechtigung und gruppenberechtigungen // Dein Windows User wird hoffentlich ein anderer sein als dein FHEM Backup User)
Und nochwas…
Kann es ggf. noch am NAS liegen? genauer an SMB 1.0 ?? hast du dein NAS nach Jahren mal geupdated?
(lies dazu hier gerne noch in den Kommentaren)
Fazit: Ich glaube dein mounting funktioniert einfach gerade nicht sauber.
Beste Grüße,
Holger Sch.
Hey Holger und Dirk,
ich habe dasselbe Problem wie Dirk.
Ordner werden nur local angelegt.
Dank der Gedankengänge von Holger habe ich ein erstes erfolgreiches Backup AUF dem NAS hinbekommen.
Ich hänge den Ordner mit folgendem Befehl ein:
mount -t nfs 192.168.2.104:/volume1/fhem /opt/fhem/backup/rpi/fhem/192.168.2.70
Danach starte ich das Backup über die Web Oberfläche und “taadaaaa”, es erscheint auf dem NAS ein Backup.
Jetzt finde ich leider nicht heraus, wie ich das im vorhanden Script umsetzte, oder was das eigentliche Problem bei mir ist. ( Mag auch der Uhrzeit mittlerweile geschuldet sein ).
Vielleicht kannst Du da aufklären, was bei meinem System evtl schief läuft, das es nicht über das Script direkt geht und er stattdessen einen Ordner lokal anlegt.
Anbei mal die Log Ausgabe vor und nach dem manuellen Mount. Ich sehe da keine Unterschied:
########Vor manuelem mount#########
2020.05.16 01:41:18 4: dummy set FHEM.Backup on
/backup bereits vorhanden
PING 192.168.2.104 (192.168.2.104) 56(84) bytes of data.
64 bytes from 192.168.2.104: icmp_seq=1 ttl=64 time=0.476 ms
###### nach manuelem mount ########
— 192.168.2.104 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.476/0.476/0.476/0.000 ms
192.168.2.104 erreichbar
/opt/fhem/backup bereits vorhanden
/opt/fhem/backup nicht leer, kein Mounten notwendig
/opt/fhem/backup/rpi/fhem//192.168.2.70 existiert bereits
200516_014118_fhem_backup.tar.gz (39 MB) wird in den Backupordner verschoben
2020.05.16 01:41:36 4: dummy set FHEM.Backup off
Mount wieder unmounten
umount: /opt/fhem/backup: not mounted.
2020.05.16 01:11:02 4: dummy set FHEM.Backup on
/backup bereits vorhanden
PING 192.168.2.104 (192.168.2.104) 56(84) bytes of data.
64 bytes from 192.168.2.104: icmp_seq=1 ttl=64 time=0.478 ms
— 192.168.2.104 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.478/0.478/0.478/0.000 ms
192.168.2.104 erreichbar
/opt/fhem/backup bereits vorhanden
/opt/fhem/backup nicht leer, kein Mounten notwendig
/opt/fhem/backup/rpi/fhem//192.168.2.70 existiert bereits
200516_011103_fhem_backup.tar.gz (39 MB) wird in den Backupordner verschoben
2020.05.16 01:11:18 4: dummy set FHEM.Backup off
Mount wieder unmounten
umount: /opt/fhem/backup: not mounted.
Trotz des umount Befehls am Ende, der ja scheinbar eh fehlschlägt, kann ich fröhlich Backups auf meinen NAS schieben über die fhem Oberfläche.
Bis zum reboot, dann war es das.
Grüße
Sven
Bei wem auch alles funktioniert, aber Fehlermeldungen in den Logs sind:
Walter hat das Problem schon gelöst, aber hier am Ende nochmal angehängt.
Problem ist das im Code oben ein Fehler mit gesetzten Hochkommas ist:
bei nachstehender Zeile im Script:
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
“richtige” Hochkommas setzen:
if [ ‘echo “$line” | grep -c “$mountComplete”‘ != 0 ]
und in mountComplete den Eintrag sec=xxx entfernen.
Hallo Jörg,
ich bin bei deiner “alten” Anleitung gelandet und baue sie gerade in mein neu aufgesetztes FHEM ein. Dabei bin ich aber über die letzten Zeilen gestolpert: es wird immer, also bedingungslos ein “umount” ausgeführt? Müsste das nicht nur dann erfolgen, wenn auch aus dem Script heraus ein “mount” durchgeführt wurde?
Bei “if [ “$(ls -A $localMountPoint)” ] prüfst du ja, ob der Pfad evtl. sowieso schon gemountet ist. Ich meine, wenn dem so ist, sollte am Ende des Scriptes doch nicht unmounted werden, oder?
Hallo zusammen,
ich bekomme folgende Fehler beim Ausführen des backup.sh files.
backup.sh: Zeile 56: Syntaxfehler beim unerwarteten Wort `done’
‘ackup.sh: Zeile 56: `done < "/etc/fstab"
Hat da jmd Erfahrungen bzw. kennt jmd das Problem und hat eine Lösung?
Vielen Dank für eine Rückmeldung
Hallo zusammen,
bei mir hat’s bisher immer gut geklappt. Habe jetzt aber eine neue Synology und da das BTRFS-Filesystem drauf. Von Windows und Mac kein Problem, aber ich bekomme die Mount-Optionen nicht hin. Hat hier jemand eine Idee was man da eintragen muss?
Danke und VG
Achim
Hallo Jörg,
vielen Dank für die Anleitung. Das Script hat bereits einige Jahre funktioniert.
Leider klappt das Mounten jetzt nicht mehr nach dem Update der Synology auf DSM 7
Ich bekomme im Log folgende Ausgabe:
2021.07.06 03:15:00 3: FHEMBackupOn return value: -1
/backup bereits vorhanden
PING 192.168.2.124 (192.168.2.124) 56(84) Bytes Daten.
64 Bytes von 192.168.2.124: icmp_seq=1 ttl=64 Zeit=0.769 ms
— 192.168.2.124 ping statistics —
1 Pakete übertragen, 1 empfangen, 0% Paketverlust, Zeit 0ms
rtt min/avg/max/mdev = 0.769/0.769/0.769/0.000 ms
192.168.2.124 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
mountComplete: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
/etc/fstab: Eintrag bereits vorhanden: //192.168.2.124/backup /Q/backup cifs username=xxx,password=xxx,iocharset=utf8,sec=ntlm,vers=1.0 0 0
Mounts werden aktualisiert
mount: /Q/backup: //192.168.2.124/backup konnte nicht im Nur-Lese-Modus eingehängt werden.
mount: /Q/backup: //192.168.2.124/backup konnte nicht im Nur-Lese-Modus eingehängt werden.
Mounten hat anscheinend nicht geklappt, skip.
wnn ich das richtig verstehe, hat doch das Mounten geklappt, aber warum kann ees nicht geöffnet werden?
von einem Windows Rechner kann ich mich auf das Backup Laufwerk problemlos mit dem Username und passwort verbinden
kann mir bitte jemand helfen?
Hi Thomas,
ich habe den Fehler zwar nicht, aber mir kommen ein paar Meldungen komisch vor.
1)
mountComplete: //192.168.2.124/backup /Q/backup cifs
>> hier sagt er “mount complete”. Kannst Du denn per SSH nach dieser Meldung auf deinem FHEM Server nach cd /Q/backup gehen und siehst dort das was auf deiner Synology ist?
2)
mount: /Q/backup: //192.168.2.124/backup konnte nicht im Nur-Lese-Modus eingehängt werden.
>> Die Meldung verwirrt mich noch mehr…
konnte nicht im Nur-Lese modus…. das will man doch eh nicht. Man will doch da schreiben dürfen um sein Backup dort zu sichern.
3)
DSM 7 hat eh massive Probleme nach dem Release. Was auch oft passiert ist die CIFS Version. Also genauer gesagt SMB Version. Hier muss man immer mal schauen was nun im Synology an legacy versionen noch aktiv ist. Zu der Zeit wo das Script rauskam, war SMB 1.0 noch Okay, aber es gab schon SMB 2 oder sogar 3. und irgendwann sollte man mal unsichere Zöpfe abschneiden.
Also auch mal auf deinem FHEM schauen welche SMB Version du nutzt, und mit welchen Optionen Du den mount versuchst.
Alternativ mounte das Share halt als NFS und nicht als CIFS
4)
Bei der Fehlersuche hilft es ungemein, wenn man die Schritte aus dem Script “zu Fuss” und schritt-für-schritt ausführt.
Also mal versuchen den Mount befehl manuell hinzubekommen. Dann mal in die fstab eintragen, und dann schauen wo der unterschied ist.
5)
Und um die Synology als Fehlerquelle gänzlich auszuschließen…
Lad Dir Virtual Box auf deinem Windows PC, installier Dir eine virtuelle Maschine mit einem Debian oder Ubuntu.
Richte Dir ein Samba Share ein (Freigabe; Netzlaufwerk oder wie auch immer man es nennen will) und simuliere quasi den Zugriff auf das Synology.
Alternativ, da Du eh CIFS machen willst, kannst du das auch unter Windows machen.
Hallo Holger,
vielen Dank für die Hilfe.
ich habe mal etwas mit dem Mount rumgespielt.
wenn ich manuell Mounte:
sudo mount //192.168.2.124/backup /Q/backup -t cifs -o user=xxx,password=xxx,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0
kann ich unter /Q/backup die Files sehen.
wenn ich jetzt das Script starte, läuft es, da ja nicht mehr gemountet werden muss:
“/Q/backup nicht leer, kein Mounten notwendig”
ich habe dann die Zeile 57 im Script dahingehend geändert:
mountComplete=”//$mountIp/$mountDir $localMountPoint -t cifs -o username=$mountUser,password=$mountPass,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0″
umount gemacht und das Script neu gestartet…
mountComplete: //192.168.2.124/backup /Q/backup -t cifs -o username=xxx,password=xxx,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0
/etc/fstab: Eintrag wird ergänzt: //192.168.2.124/backup /Q/backup -t cifs -o username=xxx,password=xxx,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0
Mounts werden aktualisiert
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
Mounten hat anscheinend nicht geklappt, skip.
Ich habe keine Idee mehr, meine Linux und Script Kenntnisse sind auch nicht so helle.
sieht jemand einen Fehler?
Gruß
Thomas
dieser “Einlesefehler” kommt aus der fstab…
hab hier username auch noch auf user geändert:
//192.168.2.124/backup /Q/backup -t cifs -o user=xxx,password=xxx,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0
nach mount -a kommt weiterhin
mount: /etc/fstab: Einlesefehler in Zeile 14 — ignoriert
Hi Thomas.
So wie Du es per sudo zufuss auf der CMD gemacht hast hatte es ja funktioniert.
Wenn Du das dann in dem Script machst, dann geht es nicht.
Das kann ja nur bedeuten, dass Du das Script als fhemuser oder pi user ausführst und nicht mit sudo rechten.
Kannst Du das Script als root user ausführen? Geht es dann?
Oder mach es doch gleich so, dass du den Eintrag fest in die /etc/fstab reinschreibtst, und das dann drinnen lässt. Dann is das dynamische mounten bei Scriptausführung eh hinfällig weil er dann immer hinschreibt, “Kein Mounten notwendig.” Und somit hast du eine dauerhafte mount verbindung zum NAS und dein Backup geht immer. Und das is es was wir doch alle wollen. Ein NAS sollte ja eh durchgängig laufen oder?
So wie es derzeit is, nämlich dass das Script bei Programstart den Eintrag in die fstab schreibt,
Hallo Holger, danke Dir.
leider hat das alles nicht funktioniert.
wenn ich das mount
sudo mount //192.168.2.124/backup /Q/backup -t cifs -o user=xxx,password=xxx ,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0
im Terminalfenster ausführe, funktioniert es. Wenn ich dann genau das gleiche //192.168.2.124/backup /Q/backup -t cifs -o user=xxx,password=xxx ,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0 in die fstab eintrage bekomme ich bei “sudo mount -a” die Fehlermeldung: mount: /etc/fstab: Einlesefehler in Zeile 14 — ignoriert
Ich hab dann mal etwas gegoogled und bin darauf gestossen, das gemountete Laufwerke mit den korekten Parametern in die /etc/mtab eingetragen werden. dort könne man das Laufwerk rausziehen und in die fstab eintragen… das habe ich dann auch gemacht, ein paar parameter gekürzt und damit geht jetzt das mount -a:
//192.168.2.124/backup /Q/backup cifs rw,relatime,vers=1.0,cache=strict,username=xxx,password=xxx,uid=1000,gid=1000,actimeo=1 0 0
nun habe ich das backup.sh scrip auch entsprechend angepasst. Zeile 57 ist jetzt
mountComplete=”//$mountIp/$mountDir $localMountPoint -t cifs rw username=$mountUser,password=$mountPass,uid=1000,gid=1000,dir_mode=0700,file_mode=0600,vers=1.0,actimeo=1 0 0″
damit scheint es jetzt zu funktionieren.
Danke für die Hilfe
Gruß
Thomas
Hallo Thomas, hallo Jörg,
nun habe ich mein NAS auch auf 7.0 geupdatet da ich hier gelesen habe das dass backup weiterhin funktionieren sollte. Ich habe mir hier alles mehrfach durchgelesen und probiert, aber leider mounted er bei mir seit 7.0 nicht mehr automatisch. Wenn ich über die console mounte kann ich auf den NAS Ordner zugreifen, nach Neustart funktioniert das backup aber nicht mehr.
Ich bin wirklich nicht fit im Linux und den Befehlen. Wäre es daher bitte möglich, zu dem ganz oben genannten Musterscript eine Anleitung aller Änderungen aufzulisten, wo was genau geändert werden muss damit das Mounten unter 7.0. wieder funktioniert.
Ich habe versucht laut Thomas seiner Anleitung den Code anzupassen, leider ohne Erfolg
Das wäre echt super
Hallo Thomas R,
habe auch auf DSM 7.xx geupdated und wie oben schon hier beschrieben den Fehler:
mount error(13): Permission denied
Habe es dann so gelöst bekommen >> zeile 57 im script verändert:
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs rw,vers=1.0,cache=strict,username=$mountUser,domain=RIDER-SERVER,password=$mountPass,uid=0,gid=0,actimeo=1 0 0″
viel erfolg!
Gruß Thomas
Salut Zusammen
habe das Backup Skript schon Jahre im Einsatz…..
Seit ein paar Tagen gehen die Perl Befehle im Skript nicht mehr
perl /opt/fhem/fhem.pl 7072 pw “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 pw “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 pw “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 pw “setreading FHEM.Backup info backup done”
weiss jemand an was das liegen kann?
PS: Auch über die Konsole gehen die Befehle nicht…
glg Turi
Salut nochmals
hat sich erledigt, war anscheinend etwas im FHEM verbogen
Backup zurück und alles wieder i.O.
glg Turi
Hallo habe folgendes Problem.
Wenn ich http://192.168.178.51:8083/fhem?cmd=style%20edit%20backup.sh eingebe erscheint
Diese Seite funktioniert nichtFalls das Problem weiterhin besteht, wenden Sie sich an den Inhaber der Website.
HTTP ERROR 400
Was kann ich da tun ?
Hallo,
Ich hatte das gleiche Problem nach einem DSM update auf 7.x Hab bestimmt an die 2 Tage gebraucht um auf die Lösung zu kommen.
Jedes System ist unterschiedlich, sodass ich die Lösungen hier im Beitrag mir direkt nicht weitergeholfen haben, mir jedoch den Lösungsansatz gezeigt haben das Problem anzugehen. Dafür erstmal DANKE!.
Fehlerbild: mount error(13): Permission denied
Hier erstmal meine lösung im script zeile 57 ( bei “DOMAIN” tragt ihr euren NAS-Server ein):
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs rw,vers=1.0,cache=strict,username=$mountUser,domain=”DOMAIN”,password=$mountPass,uid=0,gid=0,actimeo=1 0 0″
Ich schreibe euch hier mal zusammen wie ich vorgegangen bin, weil es sein kann das die obere lösung nicht bei jedem funktioniert bzw. auch die anderen lösungen oben bei mir nicht so gepasst habe.
1. Versucht erstmal manuel zu mounten:
sudo mount -t cifs //Server-IP/Backup_ordner/fhembackup /mnt/backup -o username=xxx,password=xxx
Sollte das schon mal gehen dann gehts weiter. Sollte das nicht gehen dann im log nachsehen was für ein Fehler kommt mit:
tail -f /var/log/kern.log
Sollte dies nicht gehen dann google fragen bzw andere parameter proberien bis es klappt.
2. Wenn ihr mit dem Server via step 1. verbunden seit dann schreibt das system die log daten in /etc/mtab (steht oben in einem Beitrag Dank an Thomas). Das sind verdammt viele parameter.
Diese Parameter müsst ihr in /etc/fstb kopieren aber vorher einige parameter löschen.
Bei mir sah das dann so aus in /etc/fstb
//NAS-Server-IP/Backup_Ordner/fhembackup /mnt/backup cifs rw,relatime,vers=1.0,cache=strict,username=xxxxx,domain=xxxx-xxxx,uid=0,gid=0,actimeo=1 0 0
>>> sudo mount -a “check ob er sich verbindet”
Dabei hab ich dann nochmal einen :mount error(22): Invalid argument bekommen
Check dann die log file wieder mit:
tail -f /var/log/kern.log
>> CIFS: Unknown mount option “relatime”
Muss aus dem Parameter gelöscht werden “relatime” in /etc/fstb löschen:
//Server-IP/Backup_Ordner/fhembackup /mnt/backup cifs rw,vers=1.0,cache=strict,username=xxxxx,domain=xxxx-xxxx,uid=0,gid=0,actimeo=1 0 0
sudo mount -a “hat dann geklappt”
Jetzt nur noch mit dem funktionierenden /etc/fstb das fhem script updaten in zeile 57 und testen. Lösung steht ja schon oben. Vielleicht hilft das ja dem einen oder anderen.
Habe das gleiche Problem gehabt, nachdem ich auf Bullseye umgestiegen bin.
WICHTIG !!!
1x manuell munten mit der vers=3.0
Das manuelle mounten scheint wohl wichtig zu sein und noch wichtiger die vers=3.0
Da Samba 1.0 nicht mehr bei modernen Systemen unterstützt wird. Vers=>2.1 damit es funktioniert. Stand so bei den tests in dmesg !!
Hallo,
das Skript ist ja nun schon ein paar Jahre alt; seitdem hat sich beim Raspi-Betriebssystem einiges getan.
Oben finden sich zahlreiche Anpassungen, die sich aber zT widersprechen.
Kann denn freundlicherweise jemand, bei dem das Skript auf einem aktuellen System läuft, einmal seine korrekte Version einstellen?
Vielen Dank im Voraus!
Meine funktionierende Version sieht so aus.
Ich verwende ein QNAP NAS und einen Raspberry Pi 3 Model B Plus Rev 1.3
Ich habe Pushover aber durch Telegram ersetzt.
#!/bin/bash
mountIp=”192.168.xxx.xxx”
mountDir=”Public”
mountUser=”fhem”
mountPass=”xxxxxx”
mountSubDir=”fhem”
localMountPoint=”/Q/backup”
#optional
backupsMax=”10″
localBackupDir=”/backup”
pushoverUser=”1″
pushoverToken=”1″
###################################
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”
if [ ! -e “$localBackupDir” ]
then
echo “$localBackupDir wird erstellt”
mkdir -p “$localBackupDir”
else
echo “$localBackupDir bereits vorhanden”
fi
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null
if ! ping -c 1 $mountIp
then
echo “$mountIp nicht erreichbar, stop”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
exit
else
echo “$mountIp erreichbar”
fi
localIp=$(hostname -I|sed ‘s/\([0-9.]*\).*/\1/’)
if [ ! -e “$localMountPoint” ]
then
echo “$localMountPoint wird erstellt”
mkdir -p “$localMountPoint”
else
echo “$localMountPoint bereits vorhanden”
fi
if [ “$(ls -A $localMountPoint)” ]
then
echo “$localMountPoint nicht leer, kein Mounten notwendig”
else
echo “$localMountPoint leer, Mounten starten”
vorhanden=”0″
while read line
do
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,vers=3.0,sec=ntlmv2 0 0″
echo “mountComplete: $mountComplete”
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
then
echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
vorhanden=”1″
break
fi
done > “/etc/fstab”
fi
echo “Mounts werden aktualisiert”
mount -a
sleep 3
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
then
mkdir -p “$localMountPoint/$mountSubDir/$localIp”
else
echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
fi
find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
do
fileSize=”0″
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*/}
echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
then
curl -X POST “https://api.telegram.org/botAPIKEY/sendMessage?chat_id=CHAIID&text=Backup $filename mit $fileSizeMB MB wird erstellt”
fi
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
cp -r “/opt/fhem/backup” “$localMountPoint/$mountSubDir/$localIp/”
rm “$file”
rm -r /opt/fhem/backup/*
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
done
else
echo “Mounten hat anscheinend nicht geklappt, skip.”
exit
fi
#Löschen alter Backups
if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
then
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ “$backupsDelete” -gt “0” ]
then
echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
else
echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
fi
else
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
fi
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”
echo “Mount wieder unmounten”
umount “$localMountPoint”
Anbei mal meine optimierte Version (ich nutze für die cifs Freigabe die Datei Authentifizierung, was den Vorteil hat, dass Benutzer und Password nicht in Klartext im FHEM Log stehen)
Das cifs Auth File kann man zum Beispiel unter /home/pi/.cifscredentials anlegen.
Inhalt .cifscredentials (Domain wäre für Windows Systeme nötig, habe ich weggelassen):
username=BENUTZERNAME
password=PASSWORT
domain=DOMAIN
Dateirechte setzen:
chmod 600 /home/pi/.cifscredentials
Hier mein funktionierendes Backup Skript für FHEM:
#!/bin/bash
mountIp=”192.168.XXX.XXX”
mountDir=”backup”
#Datei Pfad für Datei Authentifizierung (Benutzer und Password nicht im fhem.log sichtbar)
mountPassFile=”/home/pi/.cifscredentials”
mountSubDir=”RPI/fhem”
localMountPoint=”/Q/backup”
backupName=”FHEM”
#optional
#Benutzer und Passwort für CIFS Freigabe nur nötig, wenn keine Datei Authentifizierung gemacht wird
mountUser=””
mountPass=””
backupsMax=”10″
localBackupDir=”/backup”
#Mit bereits definiertem Pushover Device z.B.: @DeviceName (wenn leer wird der unter msgGlobal definierte msgContactPush gewählt )
pushoverDevice=””
#Ohne definiertem Pushover Device
pushoverUser=””
pushoverToken=””
###################################
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”
if [ ! -e “$localBackupDir” ]
then
echo “$localBackupDir wird erstellt”
mkdir -p “$localBackupDir”
else
echo “$localBackupDir bereits vorhanden”
fi
tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null
if ! ping -c 1 $mountIp
then
echo “$mountIp nicht erreichbar, stop”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
exit
else
echo “$mountIp erreichbar”
fi
localIp=$(hostname -I|sed ‘s/\([0-9.]*\).*/\1/’)
if [ ! -e “$localMountPoint” ]
then
echo “$localMountPoint wird erstellt”
mkdir -p “$localMountPoint”
else
echo “$localMountPoint bereits vorhanden”
fi
if [ “$(ls -A $localMountPoint)” ]
then
echo “$localMountPoint nicht leer, kein Mounten notwendig”
else
echo “$localMountPoint leer, Mounten starten”
vorhanden=”0″
while read line
do
if [ “$mountPassFile” != “” ]
then
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs credentials=$mountPassFile,iocharset=utf8,sec=ntlmv2 0 0″
fi
if [[ “$mountUser” != “” && “$mountPass” != “” ]]
then
mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlmv2 0 0″
fi
echo “mountComplete: $mountComplete”
if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
then
echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
vorhanden=”1″
break
fi
done > “/etc/fstab”
fi
echo “Mounts werden aktualisiert”
mount -a
sleep 3
fi
if [ “$(ls -A $localMountPoint)” ]
then
if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
then
mkdir -p “$localMountPoint/$mountSubDir/$localIp”
else
echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
fi
find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
do
fileSize=”0″
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*/}
echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
#Mit definiertem Pushover Device
perl /opt/fhem/fhem.pl 7072 “msg push $pushoverDevice |$backupName| Backup mit $fileSizeMB MB wird erstellt”
#Mit Pushover Web Aufruf
if [[ “$pushoverToken” != “” && “$pushoverUser” != “” ]]
then
curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
fi
#mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
rm “$file”
perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
done
else
echo “Mounten hat anscheinend nicht geklappt, skip.”
exit
fi
#Löschen alter Backups
if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
then
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ “$backupsDelete” -gt “0” ]
then
echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
else
echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
fi
else
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
fi
backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”
echo “Mount wieder unmounten”
umount “$localMountPoint”
Moin,
ich habe das Script auch erfolgreich im Einsatz – bis vor Kurzem wurden die Daten auf einem HP-Server abgelegt, und es funktionierte gut.
Jetzt habe ich den Server (ProLiant Micro Gen8) nach etlichen Jahren durch einen Synology-NAS ersetzt. Prinzipiel funktioniert es jetzt auch mit der Speicherung auf dem NAS, jedoch werden plötzlich mehrere Archive pro Sicherungslauf erstellt, die zudem sich leicht in der Größe unterscheiden.
Im Log erscheint folgendes:
————
2024.02.05 04:30:00.003 5: Triggering FHEMBackupOn
2024.02.05 04:30:00.004 4: FHEMBackupOn exec {system (“sudo -u root /opt/fhem/FHEM/backup.sh &”)};set FHEM.Backup off
2024.02.05 04:30:00.039 3: FHEMBackupOn return value: -1
/backup bereits vorhanden
PING 192.168.1.115 (192.168.1.115) 56(84) bytes of data.
64 bytes from 192.168.1.115: icmp_seq=1 ttl=64 time=0.137 ms
— 192.168.1.115 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.137/0.137/0.137/0.000 ms
192.168.1.115 erreichbar
/mnt/backup bereits vorhanden
/mnt/backup nicht leer, kein Mounten notwendig
/mnt/backup/rpi/fhem/192.168.1.186 existiert bereits
240204_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”fdafc14d-74b5-4216-9054-fcf3f1c8cbda”}240131_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”e726e709-1d9d-4c1f-9396-0e05cef18a90″}240201_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”e41b9ec0-52cf-4036-8ab4-aeb61d8eab70″}240202_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”5bb51218-9bbc-4b14-8bae-9eadbb1f475a”}240203_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”0bc240f9-0962-4996-b253-3d9530bd8fe2″}240205_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
{“status”:1,”request”:”e773ac5b-fd3d-4644-b47f-c43b68ddd5de”}8 Backups vorhanden – nur 7 aktuelle Backups werden vorgehalten – 1 Backups werden gelöscht
Mount wieder unmounten
—————-
Letztlich habe ich nur die IP anpassen müssen, da ich die Freigaben beim Umzug dem alten Server entsprechend angepasst habe.
Gruß, Christoph
Hallo, habe das Script seit Jahren erfolgreich im Einsatz, nun aber bemerkt das es nicht mehr funktioniert.
Im Logfile erhalte ich folgende Meldung:
2024.04.04 17:36:35 3: FHEMBackupOn return value: -1
sudo: ein Terminal ist erforderlich, um das Passwort zu lesen; verwenden Sie entweder die Option -S zum Lesen von der Standardeingabe oder konfigurieren Sie einen Askpass-Helfer
sudo: Ein Passwort ist notwendig
Habe Berechtigungen alle nochmals durchgecheckt, scheint aber alles so wie beschrieben. Beim Ausführen des scriptes übers Terminal wird bei Sudo ja das PW abgefragt, dann aber macht es was es soll. Nur übers Fhem kriege ich es nicht mehr hin.
Moin,
habe das Script von sTaN aus Dez.22 benutzt, nachdem das Original mit neuem Debian aus 2024 wegen der Samba-Problematik auch bei mir nicht mehr lief. Als NAS verwende ich ein HP PR4100. Für das FHEM-Backup hatte ich mir eine eigene Freigabe eingerichtet, lief vor Jahren auch schon mal.
Nun bekomme ich folgende Fehlermeldung:
pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
Unknown command “setreading, try help.
Unknown command FHEM.Backup, try help.
Usage: inform {on|onWithState|off|raw|timer|log|status} [regexp]
Started the backup in the background, watch the log for details
Unknown command starting, try help.
Unknown command now”, try help.
“”/backup” bereits vorhanden”
ping: ”192.168.xxx.xx”: Der Parameter-String ist nicht korrekt kodiert
“”192.168.xxx.xx” nicht erreichbar, stop”
Unknown command “set, try help.
Unknown command FHEM.Backup, try help.
Unknown command error”, try help.
Unknown command “setreading, try help.
Unknown command FHEM.Backup, try help.
Usage: inform {on|onWithState|off|raw|timer|log|status} [regexp]
Unknown command ”192.168.xxx.xx”, try help.
Unknown command not, try help.
Unknown command found”, try help.
Kann mir bitte jemand helfen?