Backup - Programm?

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Backup - Programm?

Beitrag von fischmir » 11.07.2016, 23:05

Hallo zusammen,

cuxd kann ja Backups erstellen. Ich möchte gerne jede Nacht ein Backup erstellen. Auf Dauer wird mir das aber eigentlich zuviel.

Eigentlich hatte ich mir folgendes überlegt:

* Backup der letzten 30 Tage halten, danach löschen
* Backup vom 01. des Monats sollen aber behalten werden

Hat jemand so etwas schonmal in freier Laufbahn gesehen und kann mir den Weg weisen?

Viele Grüße,
Christian

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Backup - Programm?

Beitrag von eiGelbGeek » 12.07.2016, 22:45

Wohin willst du deine Backups denn speichern ?

Wenn es z.b. ein Raspberry ist oder ein andere Linux System .... dann könnte man sicherlich ein Bash Script schreiben, das die Anzahl der Dateien im Ordner prüft und wenn 30 erreicht sind, dann das erste File in ein Monats Verzeichnis schiebt und alle andere in ein Letzter Monat Ordner .... dieser wird vorher geleert.... somit hätte man den letzen Monat immer komplett bis zum nächsten Monat... und Die monatlichen Backups für immer.

Ich schätze RSnaphot kann das von Hause auch ... da muss man sich aber ordentlich einlesen.
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Backup - Programm?

Beitrag von fischmir » 12.07.2016, 23:14

Ziel ist eien Synology. Dort steht RS apshot grundsätzlich zur Verfügung. Jedoch sind das für mich böhmische Dörfer.

Ich bin da auf etwas lauffähigem angewisen. Jemand ne Idee?

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Backup - Programm?

Beitrag von eiGelbGeek » 13.07.2016, 11:59

Später mehr ... habe meinen Beitrag erstmal wieder gelöscht.... klappte nicht so wie ich das wollte ;)
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Backup - Programm?

Beitrag von fischmir » 13.07.2016, 13:26

Cool, da bin ich gespannt...

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Backup - Programm?

Beitrag von eiGelbGeek » 13.07.2016, 14:22

Bildschirmfoto 2016-07-13 um 14.17.24.png

Code: Alles auswählen

mkdir /SD-KARTEN-PFAD/backup/; /usr/local/addons/cuxd/extra/ccu_backup /SD-KARTEN-PFAD/backup/; scp /SD-KARTEN-PFAD/backup/* nas_user@nas:/PFAD/ZUM/BACKUPORDER/; rm -R /SD-KARTEN-PFAD/backup/
Die CCU muss sich Passwortlos über SSH am NAS anmelden können, siehe dazu im Forum, da gibt es eine Anleitung zu :)

Mir ist klar das das noch nicht die vollständige Lösung deiner Vorstellung ist, aber mit diesen, bekommst du die backUps schonmal zum NAS und werden von der CCU wieder gelöscht.


Alternativ: Du mountest die NAS Freigabe in der CCU ... mir persönlich gefällt die SSH Variante besser.....

Dann wäre der Aufruf wie folgt:

Code: Alles auswählen

/usr/local/addons/cuxd/extra/ccu_backup /PFAD/ZUM/MOUNT/POINT/
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Backup - Programm?

Beitrag von eiGelbGeek » 13.07.2016, 18:13

Code: Alles auswählen

#!/bin/bash

Monthly_Archiv_PFAD=/Users/kevin/Desktop/CCU_BackUp/Monthly/
Monthly_Backup_PFAD=/Users/kevin/Desktop/CCU_BackUp/Daily/


###########################
#Ab hier nichts verändern!#
###########################

#Abfrage ob der Ordner für komprimierte Monatliche BackUp's vorhanden ist!

	if [ -d "$Monthly_Archiv_PFAD" ]; then
		echo "Verzeichnis für Monatliche BackUp's vorhanden!"
	else
		mkdir -p $Monthly_Archiv_PFAD
		echo "Verzeichnis für Monatliche BackUp's angelegt!"
	fi

#Abfrage ob der Ordner für Tägliche BackUp's vorhanden ist!

	if [ -d "$Monthly_Backup_PFAD" ]; then
		echo "Verzeichnis für Tägliche BackUp's vorhanden!"
	else
		mkdir -p $Monthly_Backup_PFAD
		echo "Verzeichnis für Tägliche BackUp's war nicht vorhanden! Kein Monatliches BackUp angelegt!"
		exit
	fi

#Abfrage ob der Ordner für Tägliche BackUp's leer ist!  

	cd $Monthly_Backup_PFAD
	list=$(echo *)
	
	if [ "$list" = "*" ]; then
		echo "Verzeichnis hat keinen Inhalt, kein Monatliches BackUp erstellt!"
	else
		tar -C "$(dirname "$Monthly_Backup_PFAD")" -zvchf "$Monthly_Archiv_PFAD"CCU_BackUp_$(date +%m_%Y).tar.gz "$(basename "$Monthly_Backup_PFAD")"
		rm $Monthly_Backup_PFAD*
	fi

Das wäre das Bash Skript, das die Inhalte aus den Täglichen BackUps komprimiert, in den Monatlichen Ordner schiebt und anschliessend den Täglichen Ordner leer.

Auslösen kannst du das Script über einen CronJob oder auch über ein CCU Programm mit Zeitsteuerung.

Die Backup's sind so 5 MB groß ... je nach Ausstattung der CCU ... 31*5 155 MB im Monat, 2 GB im Jahr .... Ich werde von hinten Monatliche Backups löschen .... sprich wenn 12 Monats BackUps vorhanden sind, dann wird das älteste gelöscht...

*Glaube das ist eine bessere BackUp Strategie*

PS: Natürlich kann man die Täglichen BackUps auch nur Wöchentlich machen ..... das kann man ja in der Zeitsteuerung im CCU Programm einstellen .... (wenn umbedingt Platz gesparrt werden soll)

Natürlich kannst du auch am 1.ten eines Monats das BackUp in 2 Ordner kopieren .... das wäre alles im CCU Programm machbar ...
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Backup - Programm?

Beitrag von fischmir » 13.07.2016, 20:32

Erstmal vielen Dank für deine Unterstützung.

Ich befürchte, ich brauche eine weitere Anleitung, wo ich das bash-script wie speichere. Und dann muss ich wissen, wie ich es aus einem CCU - Programm aufrufen kann. Gerne auch einen guten google-Treffer, den ich dann abrarbeiten kann...

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Backup - Programm?

Beitrag von eiGelbGeek » 13.07.2016, 22:59

Puh dann wird es schwer ... wenn du so keine Ahnung von der Bash hast .... mit der Bash kann man ganze Systeme zerstören...

Code: Alles auswählen

#Script für automatisierte Homematic CCU2 System BackUp's mit einem Linux/Unix System!
#Version 0.2
#Copyright by eiGelbGeek - 13.07.2016
#Nutzung auf eigene Gefahr, ich übernehme keine Verantwortung für Datenverluste!

#!/bin/bash
##########################################################################################
#Konfiguration

#Pfad zum BackUp Verzeichnis!
PFAD=/Users/kevin/Desktop/CCU_BackUp/
#Angabe der Wochen bis ein Monat's BackUp erstellt wird!
monthly_interval=5
#Anzahl der Monat's BackUp, bei erreichen wird das älteste gelöscht!
monthly_del_interval=12

##########################################################################################
#Ab hier nichts verändern!
##########################################################################################

#Abfrage ob der Ordner für komprimierte Monatliche BackUp's vorhanden ist!

	if [ -d "$PFAD/Monthly/" ]; then
		echo "Verzeichnis für Monatliche BackUp's -> OK!"
	else
		mkdir -p $PFAD/Monthly/
		echo "Verzeichnis für Monatliche BackUp's -> OK!"
	fi

#Abfrage ob der Ordner für komprimierte Wöchentliche BackUp's vorhanden ist!

    if [ -d "$PFAD/Weekly/" ]; then
        cd $PFAD/Weekly/
		list=$(echo *)
		if [ "$list" = "*" ]; then
			touch $PFAD/Weekly/dummy.txt
            echo "Verzeichnis für Wöchentliche BackUp's -> OK!"
        else
            echo "Verzeichnis für Wöchentliche BackUp's -> OK!"
        fi	
    else
            mkdir -p $PFAD/Weekly/
			touch $PFAD/Weekly/dummy.txt
            echo "Verzeichnis und Dummy für Wöchentliche BackUp's -> OK!"
    fi

#Abfrage ob der Ordner für Tägliche BackUp's vorhanden ist!

	if [ -d "$PFAD/Daily/" ]; then
			echo "Verzeichnis für Tägliche BackUp's -> OK!"
	else
		mkdir -p $PFAD/Daily/
		echo "Verzeichnis für Tägliche BackUp's -> OK!"
		echo "Initialisierung des Homematic BackUp Script -> OK"
		exit
	fi

#Wöchentliches komprimiertes BackUp erzeugen und Tägliche BackUp's löschen! 

	cd $PFAD/Daily/
	list=$(echo *)
	
	if [ "$list" = "*" ]; then
		echo "Verzeichnis hat keinen Inhalt, kein Wöchentliches BackUp erstellt!"
	else
		cd $PFAD/Daily/
		ls -t | tail -n 1 | xargs rm -f
		tar -C "$(dirname "$PFAD/Daily/")" -zvchf "$PFAD/Weekly/"CCU_BackUp_$(date +vom_%d_%m_%Y_um_%H_%M_%S).tar.gz "$(basename "$PFAD/Daily/")"
		cd $PFAD/Daily/
		ls -t | tail +2 | xargs rm -f
	fi

#Monatliches komprimiertes BackUp erzeugen und Wöchentliche löschen! (Intervall in der Konfiguration einstellen!)

		cd $PFAD/Weekly/
		anzahl=$(ls -F |grep -v / | wc -l)
		anzahl_k=$((anzahl+1))
		if [ $anzahl -ge $monthly_interval ]; then
			cd $PFAD/Weekly/
			ls -t | tail -n 1 | xargs rm -f
			tar -C "$(dirname "$PFAD/Weekly/")" -zvchf "$PFAD/Monthly/"CCU_BackUp_$(date +vom_%d_%m_%Y_um_%H_%M_%S).tar.gz "$(basename "$PFAD/Weekly/")"
			cd $PFAD/Weekly/
			ls -t | tail +2 | xargs rm -f
		else
			echo "Intervall für Monatliches BackUp noch nicht erreicht!"
		fi
#Ältestes Monatliche Backup löschen, wenn das Interval zum löschen erreicht ist 
		cd $PFAD/Monthly/
		anzahl_k=$((monthly_del_interval+1))
		anzahl=$(ls -F |grep -v / | wc -l)
		if [ $anzahl -ge $anzahl_k ]; then
			ls -t | tail -n 1 | xargs rm -f
		else
		echo "Intervall zum löschen Monatlicher BackUps noch nicht erreicht!"
		fi

Das ist mein aktueller Stand! Das rufe ich jeden Montag um 04:00 per CronJob auf. Es löscht die älteste Tägliche Datei, komprimiert die restlichen Dateien und schiebt sie zu den Wöchentlichen BackUps anschliessend wird der Tägliche Ordner gelöscht, bis auf die neuste Datei! (Deswegen wird vorher auch die Älteste gelöscht, so habe ich immer die letzte im Ordner, aber komprimiere keine Dateien doppelt) Sobald 5 Dateien im Wöchentliche Ordner sind, werden sie zu einen Monatlichen BackUp komprimiert ind ebenfalls wird vorher das älteste gelöscht, und die neuste bleibt im Ordner vorhanden. (daher wird bei der Initialisierung auch eine dummy.txt angelegt, damit keine ganze Woche verloren geht beim Start. die Dummy.txt löscht sich automatisch im durchlauft. Nicht selbst löschen! kann zu Datenverlusten führen!

PS: Keine Haftung für Datenverluste ......
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Backup - Programm?

Beitrag von eiGelbGeek » 14.07.2016, 10:25

Wenn ich das Script komplett fertig habe, versuche ich dir zu helfen es in deinen NAS zu integrieren. Aber im Moment ändere ich noch zuviel am Script.

Code: Alles auswählen

#Script für automatisierte rotierende Homematic CCU2 System BackUp's mit einem Linux/Unix System!
#Version 0.3
#Copyright by eiGelbGeek - 13.07.2016 - Letzte Änderung: 14.07.2016
#Written @ macOS
#Nutzung auf eigene Gefahr, ich übernehme keine Verantwortung für Datenverluste!

#!/bin/bash
##########################################################################################
#Konfiguration

#BackUp Unterordner werden durch das Script Automatisch angelegt! Nur den Pfad zum BackUp Ordner angeben!
PFAD=/Users/kevin/Desktop/CCU_BackUp/
#Anzahl der Monat's BackUp, bei erreichen wird das älteste gelöscht!
monthly_del_interval=12

##########################################################################################
#Ab hier nichts verändern!
##########################################################################################

#Abfrage ob der Ordner für Logging vorhanden ist!

	if [ -d "$PFAD/#Log/" ]; then
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Log Dateien -> OK!" >> $PFAD#Log/CCU_BackUP.log
	else
		mkdir -p $PFAD/#Log/
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Log Dateien wurde anlegt -> OK!" >> $PFAD#Log/CCU_BackUP.log
	fi

#Abfrage ob der Ordner für komprimierte Monatliche BackUp's vorhanden ist!

	if [ -d "$PFAD/Monthly/" ]; then
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Monatliche BackUp's -> OK!" >> $PFAD#Log/CCU_BackUP.log
	else
		mkdir -p $PFAD/Monthly/
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Monatliche BackUp's wurde anlegt -> OK!" >> $PFAD#Log/CCU_BackUP.log
	fi

#Abfrage ob der Ordner für komprimierte Wöchentliche BackUp's vorhanden ist!

    if [ -d "$PFAD/Weekly/" ]; then
        cd $PFAD/Weekly/
		list=$(echo *)
		if [ "$list" = "*" ]; then
			touch $PFAD/Weekly/dummy.txt
            echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Wöchentliche BackUp's -> OK!" >> $PFAD#Log/CCU_BackUP.log
        else
            echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Wöchentliche BackUp's -> OK!" >> $PFAD#Log/CCU_BackUP.log
        fi	
    else
            mkdir -p $PFAD/Weekly/
			touch $PFAD/Weekly/dummy.txt
            echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis und Dummy für Wöchentliche BackUp's wurde anlegt -> OK!" >> $PFAD#Log/CCU_BackUP.log
    fi

#Abfrage ob der Ordner für Tägliche BackUp's vorhanden ist!

	if [ -d "$PFAD/Daily/" ]; then
			echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Tägliche BackUp's -> OK!" >> $PFAD#Log/CCU_BackUP.log
	else
		mkdir -p $PFAD/Daily/
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Verzeichnis für Tägliche BackUp's wurde anlegt -> OK!" >> $PFAD#Log/CCU_BackUP.log
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Initialisierung des Homematic BackUp Script -> OK" >> $PFAD#Log/CCU_BackUP.log
		exit
	fi

#Tägliches BackUp erzeugen

		#fehlt noch, wird derzeit durch die CCU selbst erzeugt und über SCP in den Täglichen BackUp Ordner kopiert

#Wöchentliches komprimiertes BackUp erzeugen und Tägliche BackUp's löschen! 

datumWochentag=$(date +%u)
if [ $datumWochentag -eq 1 ]; then
	cd $PFAD/Daily/
	list=$(echo *)
	if [ "$list" = "*" ]; then
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Tägliches Verzeichnis hatte keinen Inhalt, kein Wöchentliches BackUp erstellt!" >> $PFAD#Log/CCU_BackUP_Weekly.log
	else
		cd $PFAD/Daily/
		ls -t | tail -n 1 | xargs rm -f
		tar -C "$(dirname "$PFAD/Daily/")" -zvchf "$PFAD/Weekly/"CCU_BackUp_$(date +vom_%d_%m_%Y_um_%H_%M_%S).tar.gz "$(basename "$PFAD/Daily/")"
		cd $PFAD/Daily/
		ls -t | tail +2 | xargs rm -f
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Wöchentliches BackUp erstellt!" >> $PFAD#Log/CCU_BackUP_Weekly.log
	fi
else
	echo "$(date +%d_%m_%Y__%H_%M_%S) - Nächstes Wöchentliches BackUp wird nächsten Montag erstellt!" >> $PFAD#Log/CCU_BackUP_Weekly.log
fi

#Monatliches komprimiertes BackUp erzeugen und Wöchentliche löschen! (Intervall in der Konfiguration einstellen!)

datumTag=$(date +%d)
if [ $datumTag -eq 01 ]; then
	cd $PFAD/Weekly/
	list=$(echo *)
	if [ "$list" = "*" ]; then
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Wöchentliches Verzeichnis hatte keinen Inhalt, kein Monatliches BackUp erstellt!" >> $PFAD#Log/CCU_BackUP_Monthly.log
	else
			cd $PFAD/Weekly/
			ls -t | tail -n 1 | xargs rm -f
			tar -C "$(dirname "$PFAD/Weekly/")" -zvchf "$PFAD/Monthly/"CCU_BackUp_$(date +vom_%d_%m_%Y_um_%H_%M_%S).tar.gz "$(basename "$PFAD/Weekly/")"
			cd $PFAD/Weekly/
			ls -t | tail +2 | xargs rm -f
			echo "$(date +%d_%m_%Y__%H_%M_%S) - Monatliches BackUp erstellt!" >> $PFAD#Log/CCU_BackUP_Monthly.log
	fi
else
	datumMonat=$(date +%m)
	if [ $datumMonat -eq 12 ]; then
		nextmonth=1
	else
		nextmonth=$(($datumMonat+1))
	fi
		datumYear=$(date +%y)
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Kein Monatliches BackUp erstellt, nächstes BackUp wird am 1.$nextmonth.$datumYear erstellt!" >> $PFAD#Log/CCU_BackUP_Monthly.log
fi
		
#Ältestes Monatliches Backup löschen, wenn der Interval zum löschen erreicht ist 
		cd $PFAD/Monthly/
		anzahl_k=$((monthly_del_interval+1))
		anzahl=$(ls -F |grep -v / | wc -l)
		if [ $anzahl -ge $anzahl_k ]; then
			ls -t | tail -n 1 | xargs rm -f
		else
		echo "$(date +%d_%m_%Y__%H_%M_%S) - Kein Monatliches BackUp gelöscht, Intervall zum löschen von BackUps noch nicht erreicht!" >> $PFAD#Log/CCU_BackUP_Monthly.log
		fi

Nun wird das Wöchentliche Backup nur ausgeführt wenn auch Montags ist und das Monatliche nun wenn der Erste Tag im Monat ist.
Die Täglichen BackUps kommen derzeit noch direkt von der CCU. Ich überlege gerade ob ich das nicht auch in Script integrieren sollte, damit man alles an einer Stelle hat.
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Antworten

Zurück zu „CUxD“