From e57f50e13e0715583548ca0815ade0fdd5a5f2de Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 22 Mar 2017 12:36:35 +0100 Subject: [PATCH] Create backup_iobroker_folder.sh --- scripts/backup_iobroker_folder.sh | 84 +++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 scripts/backup_iobroker_folder.sh diff --git a/scripts/backup_iobroker_folder.sh b/scripts/backup_iobroker_folder.sh new file mode 100644 index 0000000..5f93441 --- /dev/null +++ b/scripts/backup_iobroker_folder.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +# Backupscript für ein (wöchentliches) Backup von ioBroker unter Docker auf einer Synology Disk Station (Sicherung des ioBroker-Verzeichnises). +# Vorhaltezeit der letzten Backups: 90 Tage, ältere Backups werden automatisch gelöscht. +# +# By André Germann +# Version 1.0 (22.03.2017) +# +# ACHTUNG: Dieses Script muss vorher auf die Synology Disk Station kopiert und dann auch dort ausgeführt werden! +# Für die geplante, regelmäßige Ausführung bietet sich der Aufgabenplaner der Disk Station an. +# +# ACHTUNG: Dieses Script stoppt vor der Sicherung des Verzeichnises den ioBroker Container! +# Zur Sicherheit wird empfohlen ioBroker vor dem Backup innerhalb des Containers zu stoppen. +# Dieses kann zum Beispiel über den vorherigen Aufruf des Scripts iobroker_stop.sh aus ioBroker heraus erledigt werden. + + +# Deklaration der Variablen. Pfade und Bezeichnungen müssen ggf. entsprechend angepasst werden. + +iobrokerPATH='/volume1/docker/mount/iobroker' # Pfad des gemounteten ioBroker-Verzeichnises (zu sicherndes Verzeichnis) auf der Synology Disk Station +backupPATH='/volume1/backup/Homeautomation/iobroker/backup.weekly' # Pfad zum Speichern des Backups +iobrokerCONTAINERNAME='iobroker' # Name des ioBroker-Containers in Docker + + +# Start Script - Ab hier muss nichts mehr geändert werden! + +echo "#####################################################" +echo "############## Backupscript gestartet. ##############" +echo "#####################################################" + + +### Backup ioBroker-Verzeichnis + + +# ioBroker-Container stoppen + +echo "" +echo "Der ioBroker-Container ($iobrokerCONTAINERNAME) in Docker wird gestoppt..." + +docker stop $iobrokerCONTAINERNAME > /dev/null + +echo "Container in Docker gestoppt." +echo "" +echo "######################################################" +sleep 5 + + +# Backupdatei erstellen + +echo "" +echo "Der Ordner $iobrokerPATH wird gesichert..." + +tar -czf "$backupPATH/backup-$(date +%d.%m.%y-%R).tar.gz" "$iobrokerPATH" + +echo "Sicherung des Ordners erstellt." +echo "" +echo "######################################################" +sleep 5 + + +# Alte Backups löschen (Löscht per "rm" alle "*.tar.gz"-Dateien im Ordner, die älter als 90 Tage sind) + +echo "" +echo "Entfernen alter Backups aus dem Verzeichnis $backupPATH..." + +find -P "$backupPATH/" -maxdepth 1 -type f \( -name '*.tar.gz' \) -ctime +19 -exec rm {} \; + +echo "Alte Backups wurden entfernt." +echo "" +echo "######################################################" +sleep 5 + + +# ioBroker-Container starten + +echo "" +echo "Der ioBroker-Container ($iobrokerCONTAINERNAME) in Docker wird gestartet..." + +docker start $iobrokerCONTAINERNAME > /dev/null + +echo "Container in Docker gestartet." +echo "" +echo "################### Script Ende ######################" + +exit 0