====== LXCCU / CCU2 Backup Script ====== um von einem anderen Linux System aus Remote ein Zeitgesteuertes Backup von der CCU2 zu erstellen. ===== Voraussetzungen ===== ein LXCCU auf einem Einplatinencomputer oder eine CCU2 und ein Einplatinencomputer (oder ein anderes Linux System auf dem wget und ein Cronjob eingerichtet werden kann) ===== Warum ===== Warum braucht man eine Sicherung? ===== Erstellen eines Backup Benutzers auf der LXCCU /CCU2 ===== ==== Auf der LXCCU / CCU2 ==== Offnet dazu das Homematic Web UI und wählt dort: Einstellungen / Benutzerverwaltung und erstellt einen Benutzer wie folgt: Benutzername: backup Passwort: * Berechtigungsstufe: Administrator * ein sehr sicheres Kennwort das ihr euch nicht merken aber notieren solltet! ===== Auf dem Linux System (z.B. LXCCU Host) ===== Öffnet eine SSH Sitzung als root zu dem Linux System (nicht die LXCCU oder CCU2 Selbst sondern im Fall der LXCCU eine Sitzung zum Raspbian darunter!). Erstellt einen script Ordner: mkdir /etc/backup mkdir -p /var/backup/ccu Erstellt ein Backup script: vi /etc/backup/backup-ccu.sh Mit folgendem Inhalt (durch Drücken der Taste [i] kommt ihr in den einfüge Modus und könnt das Script hineinkopieren): ==== Variante 1: Wöchentliche Rollierende Sicherung ==== #!/bin/bash # Homematic CCU Backup Script fuer crontab # Erstellt am 13.03.11 von Danny B. # Angepasst am 05.08.14 von PaulG4H # Parameter backupdir="/var/backup/ccu" host="" user="backup" password="" ############### Es sind keine weiteren Anpassung ab hier Notwendig run=$0.lastrun # Homematic Login wget --post-data '{"method":"Session.login","params":{"username":"'$user'","password":"'$password'"}}' http://$host/api/homematic.cgi -O hm.login.response -q >$run 2>&1 # Login-Pruefung loginerror=`cat hm.login.response|cut -d "," -f3|awk '{print $2}'` if [ "$loginerror" != "null}" ]; then echo "Fehler beim Homematic-Login !"|tee -a $run cat hm.login.response|grep message|cut -d '"' -f4|tee -a $run exit 1 fi sessionid=`cat hm.login.response|cut -d "," -f2|awk '{print $2}'|cut -d '"' -f2` # Backupdatei herunterladen wget "http://$host/config/cp_security.cgi?sid=@$sessionid@&action=create_backup" -O $backupdir/$host-backup_$(date +%V).tar.sbk -q >>$run 2>&1 # Homematic Logout wget --post-data '{"method":"Session.logout","params":{"_session_id_":"'$sessionid'"}}' http://$host/api/homematic.cgi -O hm.logout.response -q >>$run 2>&1 # temp. Dateien loeschen rm hm.login.response hm.logout.response >>$run 2>&1 Passt alle Daten in dem Script die in stehen durch eure an und verlasst den einfügemodus durch drücken der Taste [ESC] und speichert und schliest den vi durch drücken der folgenden Tastenkombination [:][wq][enter]. Damit diese Datei auch ausgeführt werden darf müst ihr sie noch ausführbar machen mit: chmod +x /etc/backup/backup-ccu.sh Nun muss noch ein Cronjob (Zeitsteuerung) angelegt werden, dies macht ihr mit: crontab -e Kopiert am besten folgende Zeile ans ende der Datei: 9 2 * * 3 /etc/backup/backup-ccu.sh Dieser Cronjob läuft nun um 02:09 jeden Dienstag und da der Dateiname der Sicherung die Wochennummer enthält werden maximal 53 Sicherungen vorgehalten und dann wieder Überschrieben. Um Das genaue Datum der Dateien zu sehen muss mann nur das Erstellungsdatum nutzen! ==== Variante 2: Tägliche Sicherung ==== hier wird die Sicherung mit der Wochentagsnummer abgelegt, dadurch wird es maximal 31 Sicherungen eben! #!/bin/bash # Homematic CCU Backup Script fuer crontab # Erstellt am 13.03.11 von Danny B. # Angepasst am 05.08.14 von PaulG4H # Parameter backupdir="/var/backup/ccu" host="" user="backup" password="" ############### Es sind keine weiteren Anpassung ab hier Notwendig run=$0.lastrun # Homematic Login wget --post-data '{"method":"Session.login","params":{"username":"'$user'","password":"'$password'"}}' http://$host/api/homematic.cgi -O hm.login.response -q >$run 2>&1 # Login-Pruefung loginerror=`cat hm.login.response|cut -d "," -f3|awk '{print $2}'` if [ "$loginerror" != "null}" ]; then echo "Fehler beim Homematic-Login !"|tee -a $run cat hm.login.response|grep message|cut -d '"' -f4|tee -a $run exit 1 fi sessionid=`cat hm.login.response|cut -d "," -f2|awk '{print $2}'|cut -d '"' -f2` # Backupdatei herunterladen wget "http://$host/config/cp_security.cgi?sid=@$sessionid@&action=create_backup" -O $backupdir/$host-backup_$(date +%d).tar.sbk -q >>$run 2>&1 # Homematic Logout wget --post-data '{"method":"Session.logout","params":{"_session_id_":"'$sessionid'"}}' http://$host/api/homematic.cgi -O hm.logout.response -q >>$run 2>&1 # temp. Dateien loeschen rm hm.login.response hm.logout.response >>$run 2>&1 Passt alle Daten in dem Script die in stehen durch eure an und verlasst den einfügemodus durch drücken der Taste [ESC] und speichert und schliest den vi durch drücken der folgenden Tastenkombination [:][wq][enter]. Damit diese Datei auch ausgeführt werden darf müst ihr sie noch ausführbar machen mit: chmod +x /etc/backup/backup-ccu.sh Nun muss noch ein Cronjob (Zeitsteuerung) angelegt werden, dies macht ihr mit: crontab -e Kopiert am besten folgende Zeile ans ende der Datei: 9 2 * * * /etc/backup/backup-ccu.sh Dieser Cronjob läuft nun um 02:09 jeden Tag und da der Dateiname der Sicherung den Tag des Monats enthält werden maximal 31 Sicherungen vorgehalten und dann wieder Überschrieben. Um Das genaue Datum der Dateien zu sehen muss mann nur das Erstellungsdatum nutzen! ==== Test der Sicherung ==== Zu testzwecken könnt ihr das Script auch manuell durch den Aufruf von: /etc/backup/backup-ccu.sh Ausführen, aber dies dauert je nach größe und Auslastung des Systems einige Minuten! Damit sollte für die Zukunft immer eine einigermaßen Aktuelle Sicherung zur verfügung stehen! Wer jetzt noch von seinem Desktop Bequem auf die Sicherungen Zugreifen möchte kanns ich ja einen Samba Server einrichten welcher das /var/backup Verzeichniss Freigibt...