Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Script für automatisches Backup steuerbar durch VIS

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    224

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

[Vorlage] Script für automatisches Backup steuerbar durch VIS

[Vorlage] Script für automatisches Backup steuerbar durch VIS

Scheduled Pinned Locked Moved Skripten / Logik
283 Posts 29 Posters 54.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • PeoplesP Offline
    PeoplesP Offline
    Peoples
    wrote on last edited by
    #207

    Und genau deswegen werde ich das auch so einpflegen.

    Danke nochmal!

    Ich beantworte keine Fragen zu Themen via PN

    1 Reply Last reply
    0
    • simatecS Offline
      simatecS Offline
      simatec
      Developer Most Active
      wrote on last edited by
      #208

      Ich habe den backup.sh Script mal für CIFS angepasst und auch das starten und stoppen für das komplette Backup.

      Des Weiteren habe ich den Pfad für das erstellen des kompletten Backups direkt in den IoBroker Backup Ordner gelegt.

      Das hat bei einer CIFS Verbindung den Vorteil, dass erst garnicht auf dem Raspberry oder der Gleichen geschrieben wird, sondern direkt auf dem CIFS Laufwerk.

      Für die CIFS Verbindung müsste nur der Javascript mit dem Variablen noch angepasst werden.

      Da bin ich nicht so der richtige Ansprechpartner 😉

      ##!/bin/bash
      
      # Beschreibung: Backupscript fuer IoBroker
      #
      # Basierend auf dem Script von Kuddel: http://forum.iobroker.net/viewtopic.php?f=21&t=9861
      #
      # Funktionen: - Erstellen eines normalen ioBroker-Backups
      #             - Erstellen eines Backups des ganzen ioBroker-Ordners
      #             - Optionales loeschen von Backups aelter x-Tage
      #             - Optionales weiterkopieren auf einen FTP-Server
      #
      #
      # Author: Steffen
      # Version: 1.0 - Erster Entwurf des Backupscripts
      # Version: 1.0.1 - Optionaler Upload auf FTP-Server
      #
      #
      # Verwendung: run bash backup.sh "[Backup_Typ|Namens_Zusatz|Loeschen_nach_X_Tagen|FTP_Host|FTP_Verzeichnis|FTP_User|FTP_Passwort]
      # run 'bash backup.sh '
      #
      STRING=$1
      echo $STRING
      IFS="|"
      VAR=($STRING)
      
      BKP_TYP=${VAR[0]}
      NAME_ZUSATZ=${VAR[1]}
      BKP_LOESCHEN_NACH=${VAR[2]}
      FTP_HOST=${VAR[3]}
      FTP_DIR=${VAR[4]}
      FTP_USR=${VAR[5]}
      FTP_PASS=${VAR[6]}
      CIFS_HOST=${VAR[7]}
      CIFS_DIR=${VAR[8]}
      CIFS_USR=${VAR[9]}
      CIFS_PASS=${VAR[10]}
      
      #Variable fuer optionales Weiterkopieren
      BKP_OK="NEIN"
      
      #Datum definieren
      datum=`date +%Y_%m_%d`
      #Uhrzeit bestimmten
      uhrzeit=`date +%H_%M_%S`
      #Stunde definieren
      stunde=`date +%H`
      
      ############################################################################
      #									   #
      # Optionaler Mount auf CIFS-Server                    			   #
      #                                                                          #
      ############################################################################
      
      	if [ -n "$CIFS_HOST" ]; then
      		echo
      		Backup-Pfad auf CIFS mounten
      		sudo umount /opt/iobroker/backups
      		sudo mount -t cifs -o user=$CIFS_USR,password=$CIFS_PASS,rw,file_mode=0777,dir_mode=0777 //$CIFS_HOST/$CIFS_DIR /opt/iobroker/backups
      		echo "--- CIFS-Server verbunden ---"
      	else
      		echo "--- Backup-Pfad wurde nicht auf CIFS-Server verbunden ---"
      	fi
      
      ############################################################################
      #									   #
      # Erstellen eines normalen ioBroker Backups                                #
      #                                                                          #
      ############################################################################
      
      if [ $BKP_TYP == "minimal" ]; then
      
      	echo
      #	Backup ausfuehren
      	echo --- Es wurde ein Normales Backup gestartet ---
      	iobroker backup
      	echo
      	echo --- Backup Erstellt ---
      	BKP_OK="JA"
      
      #	Backup umbenennen
      	mv /opt/iobroker/backups/$datum-$stunde* /opt/iobroker/backups/backupiobroker_minimal$NAME_ZUSATZ-$datum-$uhrzeit.tar.gz
      
      ############################################################################
      #									   #
      # Erstellen eines Backups des ganzen ioBroker-Ordners                      #
      #                                                                          #
      ############################################################################
      
      elif [ $BKP_TYP == "komplett" ]; then
      #	IoBroker stoppen
      	cd /opt/iobroker
      	iobroker stop
      	echo --- IoBroker gestoppt ---
      #	Ins ioBroker Backup wechseln um komplettes IoBroker Verzeichnis zu sichern
      	cd /opt/iobroker/backups
      	echo
      #	Backup ausfuehren
      	echo --- Es wurde ein Komplettes Backup gestartet ---
      	tar -czf $datum-$uhrzeit-backup_komplett.tar.gz --exclude="/opt/iobroker/backups" /opt/iobroker
      	echo
      	echo --- Backup Erstellt ---
      	BKP_OK="JA"
      
      #	Backup umbenennen
      	mv /opt/iobroker/backups/$datum-$stunde*_komplett.tar.gz /opt/iobroker/backups/backupiobroker_komplett$NAME_ZUSATZ-$datum-$uhrzeit.tar.gz
      # 	Iobroker restart
      #	cd /opt/iobroker
      	iobroker start
      	echo --- IoBroker gestartet ---
      
      else
      	echo "Kein gueltiger Backup Typ gewaehlt! Moegliche Auswahl: 'minimal' oder 'komplett'"
      fi
      
      ############################################################################
      #									   #
      # Optionales Loeschen alter Backups                                        #
      #                                                                          #
      ############################################################################
      
      if [ $BKP_OK == "JA" ]; then
      	if [ -n "$BKP_LOESCHEN_NACH" ]; then
      		echo
      #		Backups älter X Tage löschen
      		echo "--- Alte Backups entfernen ---"
      		find /opt/iobroker/backups -name backupiobroker_$BKP_TYP$NAME_ZUSATZ-*.tar.gz -mtime +$BKP_LOESCHEN_NACH -exec rm '{}' \;
      		sleep 10
      #		echo
      	else
      		echo "--- Es werden keine alten Backups geloescht ---"
      	fi
      
      ############################################################################
      #									   #
      # Optionaler Upload des Backups auf einen FTP-Server                       #
      #                                                                          #
      ############################################################################
      
      	if [ -n "$FTP_HOST" ]; then
      		echo
      #		Backup-Files via FTP kopieren
      
      		echo "--- Backup-File FTP-Upload ---"
      #               Verzeichnis wechseln
      		cd /opt/iobroker/backups/
      
      #		Befehl wird mit lftp ausgeführt somit muss das instaliert sein! (debian apt-get install lftp)
      
      		lftp -e 'cd '$FTP_DIR'/; put backupiobroker_'$BKP_TYP$NAME_ZUSATZ-$datum-$uhrzeit'.tar.gz; bye' -u $FTP_USR,$FTP_PASS $FTP_HOST
      		echo
      	else
      		echo "--- Backup-File wurde nicht auf ein anderes Verzeichnis kopiert ---"
      	fi
      ############################################################################
      #									   #
      # Optionaler Umount des CIFS-Servers                    		   #
      #                                                                          #
      ############################################################################
      
      	if [ -n "$CIFS_HOST" ]; then
      		echo
      		Backup-Pfad auf CIFS umounten
      		sudo umount /opt/iobroker/backups
      		echo "--- Umount CIFS Server ---"
      	else
      		echo "--- Backup-Pfad wurde nicht vom CIFS-Server getrennt ---"
      	fi
      	BKP_OK="NEIN"
      else
      	echo "Kein Backup erstellt!"
      fi
      

      @ peoples

      Falls das posten des Codes nicht gewollt ist, bitte sage mir Bescheid.

      Dann lösche ich ihn wieder und stelle ihn für deine Arbeit zur Verfügung.

      • Besuche meine Github Seite
      • Beitrag hat geholfen oder willst du mich unterstützen
      • HowTo Restore ioBroker
      1 Reply Last reply
      0
      • PeoplesP Offline
        PeoplesP Offline
        Peoples
        wrote on last edited by
        #209

        @simatec:

        @ peoples

        Falls das posten des Codes nicht gewollt ist, bitte sage mir Bescheid.

        Dann lösche ich ihn wieder und stelle ihn für deine Arbeit zur Verfügung. `

        Ne alles Ok.

        Bist du wohl ein Shell-Profi?

        Ich nämlich nicht :lol:

        Deshalb gleich ein paar Fragen:

        • Wenn ich das richtig verstehe fragst du ab ob ein Host hinterlegt ist und nur wenn dem so ist mountest du oder?

        • Beim löschen hast du ein "Sleep 10" eingebaut, braucht man das?

        • Muss der Mount als erstes erfolgen und der umount als letztes?

        Ich beantworte keine Fragen zu Themen via PN

        1 Reply Last reply
        0
        • simatecS Offline
          simatecS Offline
          simatec
          Developer Most Active
          wrote on last edited by
          #210

          Nein ein Shell Profi bin ich nicht … aber ich verstehe es etwas 😄

          zu Frage 1: ja genau ... hab es genau so umgesetzt, wie du den FTP Part aufgebaut hast. Man könnte es aber sicher auch mit ner Variablen im Javascript machen. Wenn kein Host eingetragen ist, geht er nicht in die Schleife.

          zu Frage 2: den Sleep 10 habe ich mal reingemacht, da ich das Gefühl hatte, dass der umount zu schnell für den Löschvorgang nach x Tagen erfolgt und dementsprechend der CIFS vorm löschen getrennt wird.

          Da ich ja mit CIFS alles direkt auf dem Server mache und auch in das Backup Verzeichnis von iobroker mounte, darf der umount erst erfolgen, wenn der Löschvorgang erledigt ist.

          zu Frage 3: ja am Anfang hänge ich das Netzlaufwerk ein und wenn das Backup erstellt wurde wieder aus. Man könnte es theoretisch auch dauerhaft gemountet lassen, aber ich persönlich finde es so besser gelöst.

          Aktuell fehlen aber für eine Funktion noch die Var in deinem Javascript. Da wollte ich nicht rumspielen 😉

          • Besuche meine Github Seite
          • Beitrag hat geholfen oder willst du mich unterstützen
          • HowTo Restore ioBroker
          1 Reply Last reply
          0
          • PeoplesP Offline
            PeoplesP Offline
            Peoples
            wrote on last edited by
            #211

            Noch ein Paar Fragen:

            • Wenn man dann angibt dass CIFS genutzt werden soll, unmountest du das /opt/iobroker/backups/ - Verzeichnis und mountest den Nas als genau diesen Dateipfad richtig?

            • Wenn ich jetzt sage dass ich erstellte Backups löschen möchte die bspw. älter als 5 Tage sind, werden diese doch auf dem Nas gelöscht oder?

            • Wenn ich nun eine Variable machen würde die CIFS on/off heißt, die "IF-FTP-Upload-Bedingung" prüft ob diese "off", die "IF-CIFS-Bedingung" prüft ob diese "on" ist und die Daten der FTP Angaben auch für CIFS verwendet werden, müsste man doch nur eine weitere Variable an das Shell-Script übergeben (CIFS ja oder nein) oder liege ich da falsch?

            Und ein Problem noch:

            Wenn iobroker beim kompletten Backup gestoppt und wieder gestartet wird, müssten doch auch die ganzen Schedules des Javascripts weg sein da ja der JavaScript-Adapter neu gestartet wird oder irre ich mich da?

            Ich beantworte keine Fragen zu Themen via PN

            1 Reply Last reply
            0
            • PeoplesP Offline
              PeoplesP Offline
              Peoples
              wrote on last edited by
              #212

              @BuZZy:

              Das Backup enthält also höchstwahrscheinlich nicht die aktuellsten Daten/States/Objects. `

              BuZZy auch an dich habe ich noch eine Frage kann ich ioBroker "zwingen" das Memory ab zu speichern ohne IoBroker zu beenden? Denn ich glaube dass alle gesetzten Schedules gelöscht wären da ja auch der javascript-Adapter neu gestartet wird?

              Ich beantworte keine Fragen zu Themen via PN

              1 Reply Last reply
              0
              • simatecS Offline
                simatecS Offline
                simatec
                Developer Most Active
                wrote on last edited by
                #213

                @peoples:

                Noch ein Paar Fragen:

                • Wenn man dann angibt dass CIFS genutzt werden soll, unmountest du das /opt/iobroker/backups/ - Verzeichnis und mountest den Nas als genau diesen Dateipfad richtig? `
                  Richtig ich mache vorher einen umount. Falls aus irgendeinem Grund das Script vorher nicht sauber durchlief und der alte mount noch besteht.

                @peoples:

                • Wenn ich jetzt sage dass ich erstellte Backups löschen möchte die bspw. älter als 5 Tage sind, werden diese doch auf dem Nas gelöscht oder? `
                  Ja damit würden auf dem NAS die Backups gelöscht werden. Ist wie hier schon diskutiert Geschmackssache. Meine persönliche Meinung ist, dass die letzten 10-20 Backups ja für den E-Fall ausreichend sind und man somit nicht händisch eingreifen muss.

                @peoples:

                • Wenn ich nun eine Variable machen würde die CIFS on/off heißt, die "IF-FTP-Upload-Bedingung" prüft ob diese "off", die "IF-CIFS-Bedingung" prüft ob diese "on" ist und die Daten der FTP Angaben auch für CIFS verwendet werden, müsste man doch nur eine weitere Variable an das Shell-Script übergeben (CIFS ja oder nein) oder liege ich da falsch? `
                  Das wäre auch eine gute Lösung. Man müsste dann nur beachten, dass in der Pfadangabe des CIFS auch die Bezeichnung des Laufwerks mit drin steht.

                Bei mir z.B. "HARDDISK/backup/ioBrocker"

                @peoples:

                Und ein Problem noch:

                Wenn iobroker beim kompletten Backup gestoppt und wieder gestartet wird, müssten doch auch die ganzen Schedules des Javascripts weg sein da ja der JavaScript-Adapter neu gestartet wird oder irre ich mich da? `
                Ich bin mir nicht sicher, aber ich denke sämtliche States und schedules sollten erhalten bleiben.

                Habe den Script jetzt so mehrfach durchlaufen lassen und hatte bisher keine Probleme feststellen können.

                Werde es aber mal beobachten … 😉

                • Besuche meine Github Seite
                • Beitrag hat geholfen oder willst du mich unterstützen
                • HowTo Restore ioBroker
                1 Reply Last reply
                0
                • simatecS Offline
                  simatecS Offline
                  simatec
                  Developer Most Active
                  wrote on last edited by
                  #214

                  Mir ist noch ein kleiner Fehler im Pfad für das löschen nach x Tagen aufgefallen.

                  Bei mir wurde so keine Datei gelöscht.

                  Der Suchname müsste in Anführungsstrichen stehen … also wie im Beispiel.

                  find /opt/iobroker/backups -name "backupiobroker_$BKP_TYP$NAME_ZUSATZ*.tar.gz" -mtime +$BKP_LOESCHEN_NACH -exec rm '{}' \;
                  

                  Und noch eins …

                  Durch das stoppen von IoBroker wird beim kompletten Backup der Datenpunkt "letztes_Backup" nicht mehr gesetzt. Da IoBroker gestoppt wird, wird auch der Script unterbrochen.

                  Ich habe bei mir den Pfad vorm bash-Aufruf gesetzt.

                  Ist zwar noch nicht die super Lösung, aber der Datenpunkt wird gesetzt.

                  • Besuche meine Github Seite
                  • Beitrag hat geholfen oder willst du mich unterstützen
                  • HowTo Restore ioBroker
                  1 Reply Last reply
                  0
                  • PeoplesP Offline
                    PeoplesP Offline
                    Peoples
                    wrote on last edited by
                    #215

                    Ich bau das alles mal mit in das neue ein und schick dirs mal rüber dann kannst du als "fast profi" mal sehen wo noch Fehler sind :lol:

                    Wird aber weng dauern denn zur Zeit ist wenig Zeit :mrgreen:

                    Ich beantworte keine Fragen zu Themen via PN

                    1 Reply Last reply
                    0
                    • simatecS Offline
                      simatecS Offline
                      simatec
                      Developer Most Active
                      wrote on last edited by
                      #216

                      Stelle mich gerne zum testen zur Verfügung [emoji6]

                      Gesendet von iPhone mit Tapatalk

                      • Besuche meine Github Seite
                      • Beitrag hat geholfen oder willst du mich unterstützen
                      • HowTo Restore ioBroker
                      1 Reply Last reply
                      0
                      • smartboartS Offline
                        smartboartS Offline
                        smartboart
                        wrote on last edited by
                        #217

                        Hallo Leute, erstmal danke an all jenee , welche hier so tolle Arbeit geleistet haben…Ich bin neu hier und habe mich als Trittbrettfahrer mal angehängt und die Scripte installiert und ausprobiert....funktioniert soweit super, leider bekomme ich die Daten nicht auf mein Nass geschoben. Das ganze ist als USB Speicher an der Fritzbox realisiert. mit Freigabe Benutzer Name und Passwort...

                        Üner den Browser ist dieser ordner nach Eingabe von Benutzer und Passwort wie folgt erreichbar: ftp://192.161.1.1/backup

                        Kann mir jemand sagen ob ich das richtig eingetragen habe, bzw. wie ich das Eintrage damit es funktioniert?

                        ich habe es auch schon ohne ftp:// eingetragen also nur die IP....hat auch nicht funktioniert...

                        Danke schon mal für die Hilfe...
                        6558_backup.jpg

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          Kunibert
                          wrote on last edited by
                          #218

                          Hast du einmal probiert das Shell-Skript direkt auf der Kommandozeile auszuführen? Hast du da einen Fehler bekommen?

                          Ist auch in diesem Thread (so etwa auf Seite 😎 beschrieben. Dann kannst du ausschließen ob es am Zugriff auf das NAS oder am Skript liegt bzw. bekommst auch ein Fehlerlog.

                          1 Reply Last reply
                          0
                          • smartboartS Offline
                            smartboartS Offline
                            smartboart
                            wrote on last edited by
                            #219

                            Hallo danke für die schnelle antwort,

                            als Meldung bekomme ich das:
                            6558_unbenannt.jpg

                            1 Reply Last reply
                            0
                            • wendy2702W Offline
                              wendy2702W Offline
                              wendy2702
                              wrote on last edited by
                              #220

                              Kann es sein das du auf deinem NAS nur "SFTP" aktiviert hast?

                              Bitte keine Fragen per PN, die gehören ins Forum!

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              1 Reply Last reply
                              0
                              • smartboartS Offline
                                smartboartS Offline
                                smartboart
                                wrote on last edited by
                                #221

                                Hallo, habe meine Backup HDD als USB Festplatte an der Fritzbox…habe dort keine Einstellung zum Thema SFTP. und der Speicherort it ja auch über den Borwser mit ftp://192.168.X.X/backup erreichbar...

                                1 Reply Last reply
                                0
                                • wendy2702W Offline
                                  wendy2702W Offline
                                  wendy2702
                                  wrote on last edited by
                                  #222

                                  Musstest du beim Zugriff über Browser beim ersten mal irgendwelche Sicherheitseinstellungen / Certificate installieren/Bestätigen?

                                  Kannst du mal auf dem Pi das machen:

                                  sudo sftp 192.168.x.x
                                  ````durch die Adresse der Fritte ersetzen.
                                  
                                  Kenne das Script nicht aber nutzt es FTP oder SFTP?
                                  
                                  Welche Version des Scriptes nutzt du denn?
                                  
                                  Hast du das gemacht:
                                  
                                  

                                  apt-get install lftp

                                  Bitte keine Fragen per PN, die gehören ins Forum!

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  1 Reply Last reply
                                  0
                                  • smartboartS Offline
                                    smartboartS Offline
                                    smartboart
                                    wrote on last edited by
                                    #223

                                    Nein keine Zertifikate…
                                    6558_unnn.jpg

                                    apt-get install lftp wurde durchgeführt

                                    benutze das Skript welches man auf Seite 1 runterladen kann. Sollte das aktuelle sein, da ich es erst vorgestern gezogen habe.

                                    Danke für die vielen Hilfestellungen…
                                    6558_u.jpg 6558_u2.jpg

                                    1 Reply Last reply
                                    0
                                    • wendy2702W Offline
                                      wendy2702W Offline
                                      wendy2702
                                      wrote on last edited by
                                      #224

                                      Was passiert wenn du versuchst von deiner Konsole per commandline FTP zu öffnen?

                                      Bitte keine Fragen per PN, die gehören ins Forum!

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      1 Reply Last reply
                                      0
                                      • smartboartS Offline
                                        smartboartS Offline
                                        smartboart
                                        wrote on last edited by
                                        #225

                                        welche command line meinst du?

                                        sudo ftp 192.168.x.x ?

                                        dann kommt sudo ftp command not found

                                        1 Reply Last reply
                                        0
                                        • wendy2702W Offline
                                          wendy2702W Offline
                                          wendy2702
                                          wrote on last edited by
                                          #226

                                          Geht es mit lftp?

                                          Denke du hast auch das Shell script von dem Post an die entsprechende Stelle kopiert?

                                          Bitte keine Fragen per PN, die gehören ins Forum!

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          60

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe