Backup-Strategie einfaches Script

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
dll-live
Beiträge: 93
Registriert: 08.01.2017, 14:42
Hat sich bedankt: 10 Mal

Backup-Strategie einfaches Script

Beitrag von dll-live » 16.09.2017, 15:28

Hallo zusammen.

Normalerweise bin ich der Konsument und "blöde" Fragensteller in diesem Forum.

Heute kann ich evtl dem einen oder anderen etwas zurück geben.
Nachdem mir die erste CCU abgeraucht ist und ich sie leider nicht wiederbeleben konnte - ist nun die nächste am Start - damit ich bei einem erneuten Ausfall nicht wieder bei 0 Anfangen muss, erstellt die CCU Backup.

Das Backup der HomeMatic wird durch die CCU selbst erstellt. Dazu herzlichen Dank an Jens Maus.
Aktuell habe ich folgende Komponenten im Einsatz:
ein NAS - zum Speichern von Daten
ein RasbperryPi 3 als CCU2 (also RASPIMATIC) - da wird das Backup jede Nacht autoamtisch angestossen
ein weiterer Pi3, welcher ganz viele Aufgaben hat (Steuerung WLAN, Radio, Wetterdaten verarbeiten etc.) - neu auch meine Backup_Strategie der Homematic umsetzen.

Da ich nun nicht einfach Backups auf Vorrat generieren möchte habe ich mir eine "Strategie" zurecht gelegt.
Die wie folgt lautet:

es gibt max 8 Backups.
Das Backup um 15. im Monat wird als Monatsbackup weg gesichert
Das Backup vom 15.11 wird zusätzlich noch als Jahresbackup gesichert.

Da ich es nicht schaffa die Datei anzuhängen kommt nun hlat der gazne Code hier (inkl. Kommentaren)
Für das Scripüt wird keine Haftung übernommen. :)

Code: Alles auswählen

#!/bin/sh 

#Variablen initierung
   #Damit dieses Script funktioniert darf im Backup Ordner neben den Backups keine Dateien liegen (Anzahl Unterordner spielen keine Rolle, doch der Name der Unterordner muss mit einem Buchstaben beginnen zwischen I und Z - so ist sichergestellt das die Backups (beginnen ja mit home...) zuerst aufgelistet werden.
   #Pfad zum BackupOrdner (muss existierren)
   BackupPfad="/home/pi/HM_Backup"
   #Pfad zum MonatsBackupOrdner (muss existieren)
   PfadzumMonatsBackup=$BackupPfad"/Monat/"
   #Pfad zum JahresBackupOrdner (muss exisiteren)
   PfadzumJahresBackup=$BackupPfad"/Jahr/"
   #Anzahl Unterordner in BackupOrdner (in der Standartkonfig sind es 2)
   minus=2
   #Tag von welchem das Monatsbackup gespeichert wird (Angabe immer 2 stellig z.B.: 01 oder 25)
   MTag=15
   #Monat von welchem Das Jahresbackup gesichert wird (Tag ist der gleiche wie das Monatsbackup) (Angabe immer 2 Stellig)"
   MMonat=11
   #Anzahl der täglichen Backups behalten (ältere werden gelöscht)
   maxanzahl=8

#vorhandene Backup auslesen
Backupordner=(`find $BackupPfad -maxdepth 1 -type f `)
Backups=${#Backupordner[@]}
StandBackups="0"
while [ $StandBackups -lt $Backups ]
do
	aktBackup=${Backupordner[$StandBackups]}
#	echo $aktBackup
	stellen=$(expr length $aktBackup)
#	echo $stellen
	ende=`expr $stellen - 9`
#	echo $ende
	start=`expr $ende - 9`
#	echo $start
	ccut=$start"-"$ende
	Datum=`echo $aktBackup | cut -c $ccut`
#	echo $Datum
        Monat=`echo $Datum | cut -c6-7`
#       echo $Monat
	Tag=`echo $Datum | cut -c 9-`
#	echo $Tag

	#Monatsbackup abspeichern
	if [ $Tag == $MTag ] ;then
		sudo cp $aktBackup $PfadzumMonatsBackup
	fi
	#Jahresbackup abspeichern
	if [ $Tag == $MTag ] && [ $Monat == $MMonat ]  ;then
                sudo cp $aktBackup $PfadzumJahresBackup
        fi

	StandBackups=$[StandBackups+1]
done

#Ordnerinhalt in Array abfüllen
ARRAY=(`ls $BackupPfad`)

ende=${#ARRAY[@]}
# Wert in Variable "Minus" abziehen weil soviel Unternoder in diesem Ordner liegen
ende=$[$ende-$minus]
i="0"

if [ $ende -gt $maxanzahl ];then
	zuloeschen=$[$ende-maxanzahl]
	cd $BackupPfad
	while [ $i -lt $zuloeschen ]
	do
#		echo ${ARRAY[$i]}
		sudo rm -rf ${ARRAY[$i]}
		i=$[$i+1]
	done
fi
Über Rückmeldungen freue ich mich.

Gruss
Dani

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“