OpenHAB-Sicherung

Aus Debacher-Wiki
Zur Navigation springenZur Suche springen

Mit Linux-Bordmitteln lässt sich relativ einfach eine komplette Sicherung des OpenHAB-Systems auf meinem Synology-NAS erstellen. Ein komplettes Backup hat den Vorteil, dass es sich relativ einfach zurück spielen lässt, wenn die Originalversion einmal beschädigt ist.

Backups sind aber immer dann ein Problem, wenn man daran denken muss, sie auch wirklich zu machen. Hier bietet sich ein automatisierter Prozess an, der die gesamte Speicherkarte regelmäßig sichert. Diese Sicherung kann man dann mit Etcher wieder auf eine Speicherkarte schreiben. Das Zurückspielen des Images mit dd hat bei mir übrigens nicht zu einer funktionfähigen Installation geführt.

Auf der Seite https://hobbyblogging.de/raspberry-pi-vollautomatisch-sichern habe ich da ein nettes Listing gefunden, aus dem ich wieder ein paar neue Elemente übernommen habe. Das Listing habe ich geringfügig an meine Bedingungen angepasst.

 1#!/bin/bash
 2#Festplatte einbinden
 3mount -t cifs -o vers=2.0,user=<nas-user>,password=<nas-passwort>,rw,file_mode=0777,dir_mode=0777 //192.168.1.xy/NetBackup /mnt/nas
 4#Variablen
 5BACKUP_PFAD="/mnt/nas"
 6BACKUP_ANZAHL="5"
 7BACKUP_NAME="Sicherung"
 8#Backup erstellen
 9dd if=/dev/mmcblk0 of=${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d).img bs=1MB
10#Alte Sicherung löschen
11pushd ${BACKUP_PFAD}; ls -tr ${BACKUP_PFAD}/${BACKUP_NAME}* | head -n -${BACKUP_ANZAHL} | xargs rm; popd
12#Festplatte auswerfen
13umount /mnt/nas

Einige der Zeilen bedürfen einer Erläuterung:

  • In Zeile drei wird eine Freigabe auf dem NAS per CIFS bzw. Samba eingebunden. Bei mir auf dem NAS läuft nicht die aktuellste Version, daher muss ich hier eine ältere Versionsnummer konkret angeben.
  • In Zeile fünf wird das lokale Verzeichnis zum Mounten angegeben, dass muss man ggf. erst erstellen
  • In Zeile neun mach dd dann den eigentlichen Job. Es wird der komplette Karteninhalt auf die NAS-Freigabe kopiert
  • In den Zeilen sechs und Sieben werden noch Einstellungen für das Backup gemacht, z.B. für die maximale Zahl der Backups, die sind ja bei mir 32GB groß, insofern spielt das schon eine Rolle
  • Zeile elf muss man sich eine Weile ansehen. Im ersten Schritt wird mit pushd das aktuelle Verzeichnis gesichert und der Backup-Pfad dann als Verzeichnis gesetzt. Mit dem ls Befehl werden dann die Sicherungen gelistet und mittel head die Liste auf diejenigen beschränkt, die nicht zu den ersten 5 gehören. Diese Einträge werden dann gelöscht. Bei den ersten fünf Sicherungen gibt es hier eine Fehlermeldung, da noch nichts zu Löschen ist. Am Ende wird das ursprüngliche Arbeits-Verzeichnis wiederhergestellt.

Die Datei heißt bei mir, wie in der Vorlage, backup.sh und muss ausführbar gemacht werden.

Dann kann man sie mittels Cronjob (von root) regelmäßig ausführen:

1...
2# For example, you can run a backup of all your user accounts
3# at 5 a.m every week with:
4# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
5# 
6# For more information see the manual pages of crontab(5) and cron(8)
7# 
8# m h  dom mon dow   command
90 5 1 * * /home/openhabian/backup.sh