FHEM HowTo – Automatisches Backup auf externem NAS

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

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:

FHEM Anpassung etc sudoers_rpi

Unter Ubuntu so:

FHEM Anpassung etc sudoers_ubuntu

 

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.

FHEM Backup Pushover Notifcation iPhone 6

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.

FHEM Backup Dummy

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.

FHEM Backup Dummy Readings

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/“.

FHEM Backup auf QNAP NAS

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.

Affiliate-Links

[easyazon_image align=“none“ height=“70″ identifier=“B00T2U7R7I“ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/05/4133JwedpXL.SL110.jpg“ tag=“meintechblog-150531-21″ width=“110″][easyazon_image align=“none“ height=“110″ identifier=“B00H4JZ1KO“ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/05/31HSa02BfNYL.SL110.jpg“ tag=“meintechblog-150531-21″ width=“110″][easyazon_image align=“none“ height=“110″ identifier=“B00MO6ZV52″ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/05/317sGa09T7L.SL110.jpg“ tag=“meintechblog-150531-21″ width=“110″]

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

Verpasse keine Inhalte mehr! Trage dich in den Newsletter ein und folge uns auf Facebook.

Was ist ein Affiliate-Link? Wenn du auf einen Affiliate-Link klickst und √ľber diesen Link einkaufst, bekomme ich vom betreffenden Online-Shop oder Anbieter eine Provision, was mich u.A. bei den laufenden Kosten den Blogs unterst√ľtzt. F√ľr dich ver√§ndert sich der Preis nicht.

Jörg

hat meintechblog.de ins Leben gerufen, um seine Technikbegeisterung und Erkenntnisse zu teilen. Er veröffentlicht regelmäßig Howtos in den Bereichen Smart Home und Home Entertainment. Mehr Infos

308 Gedanken zu „FHEM HowTo – Automatisches Backup auf externem NAS“

  1. 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

    1. 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.

    2. 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.

    3. 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.

  2. 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

    1. 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

  3. 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

    1. 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

    2. 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.

    3. 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!

  4. 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.

    1. 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

  5. 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.

  6. 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.

  7. 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!

    1. 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!

  8. 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 ….

    1. 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

  9. @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

  10. @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 !

  11. 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.

  12. Also mein FHEM backup heißt git.
    Man sollte nat√ľrlich ein externes repository haben und regelm√§√üiges commit und push nicht vergessen.

  13. 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

  14. 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

    1. Hey Martin,

      mit ziemlicher Sicherheit liegt es an dem fehlenden oder falschen sudoers Eintrag. Schau mal oben.

    2. 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 :-)

    3. 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.

  15. 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.

    1. 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

    2. @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.

  16. 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 …

  17. 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

    1. 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.

    2. 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

    3. 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

    4. 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).

    5. 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.

  18. 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

    1. 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

  19. 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

    1. 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 :) )

    2. 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!

  20. 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

    1. Hallo,

      ich habe es jetzt doch noch zum laufen bekommen. Ich hatte ein Tippfehler versteckt.

      Gruss Michael

    2. 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

  21. 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

  22. 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

    1. 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

    2. 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.

  23. 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

    1. 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 ?

  24. 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

  25. 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

    1. 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

    2. 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

  26. Super Beitrag! Auch gleich umgesetzt auf meiner OMV !

    Problem! Er hat nur initial ein Backup gemacht. Macht aber nun nicht täglich/scheduled eines?

  27. 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“

  28. 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 ?

  29. 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?

    1. 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

    2. 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

  30. 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

    1. 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

  31. 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

    1. 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

  32. 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

  33. 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

    1. 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

  34. 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“

  35. 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?

    1. 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

  36. 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 …

    1. 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

    2. Hmmm, erstmal Danke f√ľr den Ansatz ,aber laut config :
      define telnetPort telnet 7072 global

      Sollte also gesetzt sein :-(

  37. 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?!?

    1. 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

  38. 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

    1. 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

    2. 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

  39. 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

  40. 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

  41. 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.

    1. 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.

  42. 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

  43. 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

  44. 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

    1. 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

  45. 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

    1. 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

  46. 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.

  47. 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

  48. 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

  49. 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….

  50. 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

  51. 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

  52. 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

  53. 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

  54. 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

  55. 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

  56. 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

  57. @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.

  58. 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

    1. 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

    2. 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

    3. 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

  59. 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

  60. 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

  61. 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 ?

  62. 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ß

  63. 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.

  64. … 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.

  65. 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]'!"

  66. 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.

  67. 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

  68. 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.

  69. 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.

  70. 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

    1. 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

  71. 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!

  72. 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?

  73. 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

  74. 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

  75. 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

    1. 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

  76. 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

    1. 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.

  77. 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

    1. 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

  78. 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

    1. 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 …

  79. 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

    1. 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

    2. 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

    3. 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

    4. 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?

  80. 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

  81. 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.

  82. *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 ;)

  83. 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?

  84. … 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 …

    1. 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…

  85. 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

  86. 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

  87. … 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?

    1. 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

    2. …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?

  88. 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

    1. … 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..

  89. 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.

    1. … 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 :

    2. 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.

  90. 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“

    1. 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…

    2. 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.

    3. … 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…

    4. 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

    5. 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?

    6. 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.

    7. 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.

  91. 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

  92. 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

    1. 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

  93. 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

  94. 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

    1. 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

  95. 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.

  96. 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

  97. 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

  98. 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 ?

    1. 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

  99. 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 ?

  100. 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

  101. 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.

  102. 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!

  103. 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.

  104. 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 :-)

  105. 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

  106. 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

  107. 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.

  108. 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

  109. 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.

    1. Hi,
      Daran habe ich auch Interesse, da es in FHEM leider keine R√ľckmeldung vom Script gibt.
      LG

  110. 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?

  111. 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?

    1. 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.

    2. 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

    3. 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

    4. 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

    5. Hallo sTaN,
      wie hast Du die backup.sh geändert damit es nach dem update auf 4.3.x wieder funktioniert?

      Gruß Detlef

    6. @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

    7. 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

    8. @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!

    9. @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

  112. 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?

  113. 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)

  114. 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

  115. 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

    1. 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

  116. 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?

  117. 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

  118. 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

  119. 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?

  120. 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

    1. 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?

  121. 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

  122. 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.

  123. 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

  124. 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

    1. 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

  125. 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

    1. 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

  126. 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

  127. 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

  128. 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#

  129. 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

  130. 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

    1. 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

  131. 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?

  132. 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.

    1. Danke hab den Fehler beim anpassen wegen Stretch ein “ gelöscht jetzt läuft es :)

    2. 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

    3. 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

  133. 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

  134. 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

    1. Hallo! Du musst in der fhem.cfg den Eintrag „define telnetPort telnet 7072 global“ definiert haben.

      Beste Gr√ľ√üe,
      Benjamin

  135. 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

    1. Hi Udo,
      vielleicht aus Vorfreude gleich mehrfach auf den Backup-Button gedr√ľckt? :D 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

    2. 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

  136. 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

  137. 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″

  138. 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

  139. 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?

  140. 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.

  141. 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

  142. 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

  143. 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:~#

    1. 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.

    2. 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

  144. 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.

  145. 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?

  146. 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

  147. 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

  148. 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?

    1. 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.

    2. 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

    3. 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

    4. 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,

    5. 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

    6. 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

    7. 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

  149. 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

    1. Salut nochmals
      hat sich erledigt, war anscheinend etwas im FHEM verbogen
      Backup zur√ľck und alles wieder i.O.

      glg Turi

  150. 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.

    1. 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 !!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert