FHEM HowTo – Automatisches Backup auf externem NAS

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.

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

    1. Danke für den Hinweis. Denke deine Anpassung ist sinnvoll, habe obiges Script deshalb entsprechend angepasst.

      Grüße
      Jörg

  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. Das Problem hatte ich auch !
      Es musste etwas im Ordner sein , danke für diesen Tip !!!

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

    3. @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. uff … 667 MB ?
      Das ist aber heftig groß ! Du sicherst damit nur Fhem ?

      gruß

      Aladin212

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

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

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

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

    6. 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. der sed-Code produziert bei mir einen Fehler. Ich habe ihn stattdessen umgeschrieben auf

    hostname -I|sed ‘s/\([0-9.]*\).*/\1/’

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. Hinter dem “sudo” darf kein “:” stehen. Probiers genau so wie im Artikel:
      “sudo /opt/fhem/FHEM/backup.sh”

      Grüße
      Jörg

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

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

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

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

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

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

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

  83. *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 😉

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  125. Guten Abend, kurze Frage. Wie muss ich das Skript denn anpassen, wenn ich keine pushover sonder eine Telegram Benachrichtigung erhalten möchte?

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

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

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

  129. Für alle die das Problem mit den Readings (setreading) haben…
    Einfach im “Device” —-> “allowed_telnetPort” unter “Everything” links im Menü zu finden, den Eintrag “Password” rauswerfen bzw “GlobalPassword” nutzen.

    Ich habe bei mir Password gelöscht.

    Siehe: https://forum.fhem.de/index.php?topic=71076.0

    mfg…

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

    1. Fehler gefunden !
      https://forum.fhem.de/index.php/topic,86924.0.html
      sec=ntlm zu sec=ntlmssp ändern !

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

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

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

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

  135. 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. Vielleicht einen Editor benutzt, der die Formatierung gekillt hat?

      Bin in dem Thema ansonsten gar nicht mehr wirklich drin, sorry.

    2. Danke hab den Fehler beim anpassen wegen Stretch ein “ gelöscht jetzt läuft es 🙂

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

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

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

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

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

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

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

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

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

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

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

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

  146. Klar,

    Lass einfach
    define FHEMBackup at *06:00:00 set FHEM.Backup on weg
    Und setze Fhem.backup auf in und das Backup startet.

  147. Klar,

    Lass einfach
    define FHEMBackup at *06:00:00 set FHEM.Backup on weg
    Und setze Fhem.backup auf on und das Backup startet.

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

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

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

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

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

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

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

  155. Hallo habe folgendes Problem.
    Wenn ich http://192.168.178.51:8083/fhem?cmd=style%20edit%20backup.sh eingebe erscheint
    Diese Seite funktioniert nichtFalls das Problem weiterhin besteht, wenden Sie sich an den Inhaber der Website.
    HTTP ERROR 400

    Was kann ich da tun ?

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

  157. Hallo,

    das Skript ist ja nun schon ein paar Jahre alt; seitdem hat sich beim Raspi-Betriebssystem einiges getan.
    Oben finden sich zahlreiche Anpassungen, die sich aber zT widersprechen.
    Kann denn freundlicherweise jemand, bei dem das Skript auf einem aktuellen System läuft, einmal seine korrekte Version einstellen?

    Vielen Dank im Voraus!

    1. Meine funktionierende Version sieht so aus.
      Ich verwende ein QNAP NAS und einen Raspberry Pi 3 Model B Plus Rev 1.3
      Ich habe Pushover aber durch Telegram ersetzt.

      #!/bin/bash

      mountIp=”192.168.xxx.xxx”
      mountDir=”Public”
      mountUser=”fhem”
      mountPass=”xxxxxx”
      mountSubDir=”fhem”
      localMountPoint=”/Q/backup”

      #optional
      backupsMax=”10″
      localBackupDir=”/backup”
      pushoverUser=”1″
      pushoverToken=”1″
      ###################################

      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”

      if [ ! -e “$localBackupDir” ]
      then
      echo “$localBackupDir wird erstellt”
      mkdir -p “$localBackupDir”
      else
      echo “$localBackupDir bereits vorhanden”
      fi

      tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null

      if ! ping -c 1 $mountIp
      then
      echo “$mountIp nicht erreichbar, stop”
      perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
      exit
      else
      echo “$mountIp erreichbar”
      fi

      localIp=$(hostname -I|sed ‘s/\([0-9.]*\).*/\1/’)

      if [ ! -e “$localMountPoint” ]
      then
      echo “$localMountPoint wird erstellt”
      mkdir -p “$localMountPoint”
      else
      echo “$localMountPoint bereits vorhanden”
      fi

      if [ “$(ls -A $localMountPoint)” ]
      then
      echo “$localMountPoint nicht leer, kein Mounten notwendig”
      else
      echo “$localMountPoint leer, Mounten starten”
      vorhanden=”0″
      while read line
      do
      mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,vers=3.0,sec=ntlmv2 0 0″
      echo “mountComplete: $mountComplete”
      if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
      then
      echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
      vorhanden=”1″
      break
      fi
      done > “/etc/fstab”
      fi
      echo “Mounts werden aktualisiert”
      mount -a
      sleep 3
      fi

      if [ “$(ls -A $localMountPoint)” ]
      then
      if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
      then
      mkdir -p “$localMountPoint/$mountSubDir/$localIp”
      else
      echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
      fi
      find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
      do
      fileSize=”0″
      fileSizeMB=$(du -h $file)
      fileSizeMB=${fileSizeMB%%M*}
      filename=${file##*/}
      echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
      if [[ “$pushoverToken” != “” && “pushoverUser” != “” ]]
      then
      curl -X POST “https://api.telegram.org/botAPIKEY/sendMessage?chat_id=CHAIID&text=Backup $filename mit $fileSizeMB MB wird erstellt”
      fi
      cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
      cp -r “/opt/fhem/backup” “$localMountPoint/$mountSubDir/$localIp/”
      rm “$file”
      rm -r /opt/fhem/backup/*
      perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
      done
      else
      echo “Mounten hat anscheinend nicht geklappt, skip.”
      exit
      fi

      #Löschen alter Backups
      if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
      then
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
      backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
      backupsDelete=$(($backupsCurrent-$backupsMax))
      if [ “$backupsDelete” -gt “0” ]
      then
      echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
      ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
      else
      echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
      fi
      else
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
      fi

      backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”

      echo “Mount wieder unmounten”
      umount “$localMountPoint”

    2. Anbei mal meine optimierte Version (ich nutze für die cifs Freigabe die Datei Authentifizierung, was den Vorteil hat, dass Benutzer und Password nicht in Klartext im FHEM Log stehen)
      Das cifs Auth File kann man zum Beispiel unter /home/pi/.cifscredentials anlegen.
      Inhalt .cifscredentials (Domain wäre für Windows Systeme nötig, habe ich weggelassen):

      username=BENUTZERNAME
      password=PASSWORT
      domain=DOMAIN

      Dateirechte setzen:
      chmod 600 /home/pi/.cifscredentials

      Hier mein funktionierendes Backup Skript für FHEM:

      #!/bin/bash

      mountIp=”192.168.XXX.XXX”
      mountDir=”backup”
      #Datei Pfad für Datei Authentifizierung (Benutzer und Password nicht im fhem.log sichtbar)
      mountPassFile=”/home/pi/.cifscredentials”
      mountSubDir=”RPI/fhem”
      localMountPoint=”/Q/backup”
      backupName=”FHEM”

      #optional
      #Benutzer und Passwort für CIFS Freigabe nur nötig, wenn keine Datei Authentifizierung gemacht wird
      mountUser=””
      mountPass=””
      backupsMax=”10″
      localBackupDir=”/backup”
      #Mit bereits definiertem Pushover Device z.B.: @DeviceName (wenn leer wird der unter msgGlobal definierte msgContactPush gewählt )
      pushoverDevice=””
      #Ohne definiertem Pushover Device
      pushoverUser=””
      pushoverToken=””
      ###################################

      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup starting now”

      if [ ! -e “$localBackupDir” ]
      then
      echo “$localBackupDir wird erstellt”
      mkdir -p “$localBackupDir”
      else
      echo “$localBackupDir bereits vorhanden”
      fi

      tar –exclude=backup -cvzf “/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz” “/opt/fhem” &>/dev/null

      if ! ping -c 1 $mountIp
      then
      echo “$mountIp nicht erreichbar, stop”
      perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup error”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info $mountIp not found”
      exit
      else
      echo “$mountIp erreichbar”
      fi

      localIp=$(hostname -I|sed ‘s/\([0-9.]*\).*/\1/’)

      if [ ! -e “$localMountPoint” ]
      then
      echo “$localMountPoint wird erstellt”
      mkdir -p “$localMountPoint”
      else
      echo “$localMountPoint bereits vorhanden”
      fi

      if [ “$(ls -A $localMountPoint)” ]
      then
      echo “$localMountPoint nicht leer, kein Mounten notwendig”
      else
      echo “$localMountPoint leer, Mounten starten”
      vorhanden=”0″
      while read line
      do
      if [ “$mountPassFile” != “” ]
      then
      mountComplete=”//$mountIp/$mountDir $localMountPoint cifs credentials=$mountPassFile,iocharset=utf8,sec=ntlmv2 0 0″
      fi
      if [[ “$mountUser” != “” && “$mountPass” != “” ]]
      then
      mountComplete=”//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlmv2 0 0″
      fi
      echo “mountComplete: $mountComplete”
      if [ `echo “$line” | grep -c “$mountComplete”` != 0 ]
      then
      echo “/etc/fstab: Eintrag bereits vorhanden: $mountComplete”
      vorhanden=”1″
      break
      fi
      done > “/etc/fstab”
      fi
      echo “Mounts werden aktualisiert”
      mount -a
      sleep 3
      fi

      if [ “$(ls -A $localMountPoint)” ]
      then
      if [ ! -e “$localMountPoint/$mountSubDir/$localIp” ]
      then
      mkdir -p “$localMountPoint/$mountSubDir/$localIp”
      else
      echo “$localMountPoint/$mountSubDir/$localIp existiert bereits”
      fi
      find “$localBackupDir” -name ‘*fhem_backup.tar.gz’ | while read file
      do
      fileSize=”0″
      fileSizeMB=$(du -h $file)
      fileSizeMB=${fileSizeMB%%M*}
      filename=${file##*/}
      echo “$filename ($fileSizeMB MB) wird in den Backupordner verschoben”
      #Mit definiertem Pushover Device
      perl /opt/fhem/fhem.pl 7072 “msg push $pushoverDevice |$backupName| Backup mit $fileSizeMB MB wird erstellt”
      #Mit Pushover Web Aufruf
      if [[ “$pushoverToken” != “” && “$pushoverUser” != “” ]]
      then
      curl -s -F “token=$pushoverToken” -F “user=$pushoverUser” -F “title=FHEM” -F “message=Backup mit $fileSizeMB MB wird erstellt” https://api.pushover.net/1/messages.json
      fi
      #mv “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
      cp “$file” “$localMountPoint/$mountSubDir/$localIp/$filename”
      rm “$file”
      perl /opt/fhem/fhem.pl 7072 “set FHEM.Backup off”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backup $filename”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupMB $fileSizeMB”
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup info backup done”
      done
      else
      echo “Mounten hat anscheinend nicht geklappt, skip.”
      exit
      fi

      #Löschen alter Backups
      if [[ “$backupsMax” != “” && “$backupsMax” != “0” ]]
      then
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax $backupsMax”
      backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
      backupsDelete=$(($backupsCurrent-$backupsMax))
      if [ “$backupsDelete” -gt “0” ]
      then
      echo “$backupsCurrent Backups vorhanden – nur $backupsMax aktuelle Backups werden vorgehalten – $backupsDelete Backups werden gelöscht”
      ls -d “/$localMountPoint/$mountSubDir/$localIp/”* | grep “_fhem_backup.tar.gz” | head -$backupsDelete | xargs rm
      else
      echo “$backupsCurrent Backups vorhanden – bis $backupsMax aktuelle Backups werden vorgehalten”
      fi
      else
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFilesMax no limit”
      fi

      backupsCurrent=`ls -A “$localMountPoint/$mountSubDir/$localIp” | grep -c “_fhem_backup.tar.gz”`
      perl /opt/fhem/fhem.pl 7072 “setreading FHEM.Backup backupFiles $backupsCurrent”

      echo “Mount wieder unmounten”
      umount “$localMountPoint”

  158. Moin,
    ich habe das Script auch erfolgreich im Einsatz – bis vor Kurzem wurden die Daten auf einem HP-Server abgelegt, und es funktionierte gut.

    Jetzt habe ich den Server (ProLiant Micro Gen8) nach etlichen Jahren durch einen Synology-NAS ersetzt. Prinzipiel funktioniert es jetzt auch mit der Speicherung auf dem NAS, jedoch werden plötzlich mehrere Archive pro Sicherungslauf erstellt, die zudem sich leicht in der Größe unterscheiden.
    Im Log erscheint folgendes:
    ————
    2024.02.05 04:30:00.003 5: Triggering FHEMBackupOn
    2024.02.05 04:30:00.004 4: FHEMBackupOn exec {system (“sudo -u root /opt/fhem/FHEM/backup.sh &”)};set FHEM.Backup off
    2024.02.05 04:30:00.039 3: FHEMBackupOn return value: -1
    /backup bereits vorhanden
    PING 192.168.1.115 (192.168.1.115) 56(84) bytes of data.
    64 bytes from 192.168.1.115: icmp_seq=1 ttl=64 time=0.137 ms

    — 192.168.1.115 ping statistics —
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.137/0.137/0.137/0.000 ms
    192.168.1.115 erreichbar
    /mnt/backup bereits vorhanden
    /mnt/backup nicht leer, kein Mounten notwendig
    /mnt/backup/rpi/fhem/192.168.1.186 existiert bereits
    240204_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
    {“status”:1,”request”:”fdafc14d-74b5-4216-9054-fcf3f1c8cbda”}240131_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
    {“status”:1,”request”:”e726e709-1d9d-4c1f-9396-0e05cef18a90″}240201_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
    {“status”:1,”request”:”e41b9ec0-52cf-4036-8ab4-aeb61d8eab70″}240202_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
    {“status”:1,”request”:”5bb51218-9bbc-4b14-8bae-9eadbb1f475a”}240203_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
    {“status”:1,”request”:”0bc240f9-0962-4996-b253-3d9530bd8fe2″}240205_043000_fhem_backup.tar.gz (695 MB) wird in den Backupordner verschoben
    {“status”:1,”request”:”e773ac5b-fd3d-4644-b47f-c43b68ddd5de”}8 Backups vorhanden – nur 7 aktuelle Backups werden vorgehalten – 1 Backups werden gelöscht
    Mount wieder unmounten
    —————-
    Letztlich habe ich nur die IP anpassen müssen, da ich die Freigaben beim Umzug dem alten Server entsprechend angepasst habe.

    Gruß, Christoph

  159. Hallo, habe das Script seit Jahren erfolgreich im Einsatz, nun aber bemerkt das es nicht mehr funktioniert.
    Im Logfile erhalte ich folgende Meldung:

    2024.04.04 17:36:35 3: FHEMBackupOn return value: -1
    sudo: ein Terminal ist erforderlich, um das Passwort zu lesen; verwenden Sie entweder die Option -S zum Lesen von der Standardeingabe oder konfigurieren Sie einen Askpass-Helfer
    sudo: Ein Passwort ist notwendig

    Habe Berechtigungen alle nochmals durchgecheckt, scheint aber alles so wie beschrieben. Beim Ausführen des scriptes übers Terminal wird bei Sudo ja das PW abgefragt, dann aber macht es was es soll. Nur übers Fhem kriege ich es nicht mehr hin.

  160. Moin,
    habe das Script von sTaN aus Dez.22 benutzt, nachdem das Original mit neuem Debian aus 2024 wegen der Samba-Problematik auch bei mir nicht mehr lief. Als NAS verwende ich ein HP PR4100. Für das FHEM-Backup hatte ich mir eine eigene Freigabe eingerichtet, lief vor Jahren auch schon mal.
    Nun bekomme ich folgende Fehlermeldung:
    pi@raspberrypi:~ $ sudo /opt/fhem/FHEM/backup.sh
    Unknown command “setreading, try help.
    Unknown command FHEM.Backup, try help.
    Usage: inform {on|onWithState|off|raw|timer|log|status} [regexp]
    Started the backup in the background, watch the log for details
    Unknown command starting, try help.
    Unknown command now”, try help.
    “”/backup” bereits vorhanden”
    ping: ”192.168.xxx.xx”: Der Parameter-String ist nicht korrekt kodiert
    “”192.168.xxx.xx” nicht erreichbar, stop”
    Unknown command “set, try help.
    Unknown command FHEM.Backup, try help.
    Unknown command error”, try help.
    Unknown command “setreading, try help.
    Unknown command FHEM.Backup, try help.
    Usage: inform {on|onWithState|off|raw|timer|log|status} [regexp]
    Unknown command ”192.168.xxx.xx”, try help.
    Unknown command not, try help.
    Unknown command found”, try help.

    Kann mir bitte jemand helfen?

Schreibe einen Kommentar

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

Das könnte dir auch gefallen