Kostenloses FHEM Backup in die Cloud (z.B. Dropbox)

Kostenloses FHEM Backup in die Cloud (z.B. Dropbox)

Backupstrategien gibt es tausende – der eine macht gar keine Backups, der andere zu selten, manche schieben das Backup aufs NAS und ganz andere wieder lassen das Backup auf der SD-Karte liegen. Nur doof wenn die SD-Karte den Geist aufgibt. Oder aber: Man installiert eine neues Programm auf seinem Server und plötzlich geht gar nichts mehr. Gut wer ein Backup hat, auf das er auch zugreifen kann.

Seitdem ich FHEM als VM auf Proxmox habe lasse ich mir automatische Snapshots anlegen die ich einmal pro Woche auf meinem NAS automatisch sichern lasse. Für die Raspberrys die ich zusätzlich im Einsatz habe fahre ich aber seit neuestem eine andere Strategie: Automatische Backups in die Cloud.

Inhalt

Cloud-Backup

Das Backup in die Cloud hat mehrere Vorteile:

  • Kostenlos
  • Voll automatisch
  • Immer verfügbar
  • Überall verfügbar
  • Ich muss mich nicht um Datenverlust kümmern

Der Einrichtungsaufwand ist außerdem vergleichsweise gering und es können viele verschiedene Cloudanbieter verwendet werden. 

Rclone

Damit das ganze funktioniert verwende ich ein kleines Programm namens „Rclone„. Damit richten wir den Cloud-Sync ein.

Es wird unter anderem Windows, Mac OS X und Linux unterstützt (dabei auch Raspberry & Co). Der Installer wählt dabei selbst die richtige Version – sehr praktisch.

Folgende Cloud-Anbieter und Dienste werden derzeit unterstützt:

amazon drive http owncloud
amazon s3 hubic pcloud
backblaze b2 memset memstore put.io
box microsoft azure blob storage qingstor
ceph microsoft onedrive rackspace cloud files
digitalocean spaces dreamhost minio sftp
dropbox nextcloud wasabi
ftp ovh webdav
google cloud storage openstack swift yandex disk
google drive oracle cloud storage the local filesystem

Vorbereitungen Dropbox

Evlt. musst dir erst für deinen Dropbox Account einen „Developer Account“ erstellen. Danach rufst du folgende Adresse auf

https://www.dropbox.com/developers/apps

Und klickst auf „Create App“

Dropbox API: Create app

Dropbox API: Create app

Dann wählst du „Dropbox API“ und „App folder“ und vergibst einen Namen. Bestätige mit „Create App“

Dropbox API: Choose API

Dropbox API: Choose API

So sieht die erstellte „App“ dann aus:

Dropbox API: Übersicht

Dropbox API: Übersicht

Notiere dir den App-Key und das App-Secret. Anschließend klickst du auf „Generate“ bei „Generated access token“

Dropbox API: Generate Access Token

Dropbox API: Generate Access Token

Installation von Rclone

Vorerst brauchst du ein Programm zum entpacken. 

Um Rclone herunterzuladen und zu installieren einfach folgenden Befehl eingeben:

Dropbox konfigurieren

Sollte dir eine Fehlermeldung wie „Failed to load config file „/home/ubuntu/.config/rclone/rclone.conf“: open /home/ubuntu/.config/rclone/rclone.conf: permission denied“ angezeigt werden so gibt es einen Fehler mit den Berechtigungen. „sudo chmod 777 /home/ubuntu/.config/rclone/“ hilft hier (Achtung: maximale Berechtigung)

n für „New Remote“

Name vergeben: Dropbox

6 für „Dropbox“

Trage deinen Dropbox App-Key und App-Secret ein

Rsync config Dropbox

Rsync config Dropbox

Bei „Use auto config?“ gibst du n ein, da wir keinen Zugriff auf einen Browser haben.

N (Nein) Wählen bei der automatischen Konfiguration

N (Nein) Wählen bei der automatischen Konfiguration

Keine Sorge, wir brauchen keinen zweiten PC mit Zugriff zu einem Browser (wie in der Eingabeaufforderung verlangt). Es reicht wenn du auf https://www.dropbox.com/developers/apps/ deine App wählst und auf „Generate Access Token“ drückst.

Den Token fügst du bei „HIER-TOKEN-EINFÜGEN“ ein und kopierst das gesamte Feld in die Eingabeaufforderung.

Syntax in Rclone

Sobald alles eingerichtet ist können wir uns mit der Befehlssyntax von Rclone auseinandersetzen. Wichtig ist hier der Name, den ihr oben bei der Einrichtung der Dropbox vergeben habt (in meinem Fall „Dropbox“). Ich musste alle Befehle als „sudo“ ausführen – sonst hat es ein Berechtigungsproblem gegeben.

vollzieht einen Sync des FHEM-Backup Ordners in das Dropbox-Verzeichnis Apps/fhem_raspberry_display/

Nachtrag: Der Sync befehlt hält den lokalen Ordner und die Cloud immer identisch. Möchtest du dass rclone nur kopieren, aber in der Cloud nicht löschen darf, so musst du den Befehl „rclone copy“ statt „rclone sync“ verwenden. Vielen dank an Michael für den Hinweis.

Tägliches Backup in die Cloud – Cronjob

Jetzt erstellen wir ein Skript das genau diesen Befehl absetzt. Das direkte Eintragen dieses Befehls als crontab hat bei mir nicht funktioniert – daher der Umweg über das Skript

mit folgendem Inhalt füllen:

Das Skript muss noch ausführbar gemacht werden:

Dieses Skript können wir jetzt als crontab eintragen, also ein Befehl der automatisch zu einer bestimmten Uhrzeit abgesetzt wird und die beiden Verzeichnisse synchronisiert.

Folges am Ende einfügen:

Jeden Tag um 23 Uhr wird der Backup Ordner an die Dropbox geschickt. Super 🙂

Jetzt müssen wir FHEM nur noch sagen dass auch jeden Tag ein Backup angelegt werden soll (am Besten vor 23 Uhr)

FHEM-Einstellungen für automatisches Backup

Mit einem DOIF können wir automatisch ein Backup starten. In meinem Fall 3x pro Woche

Maximale Anzahl an Backups begrenzen

Es macht Sinn die maximale Anzahl an Backups zu begrenzen, da wir sonst innerhalb eines Monats >10 Backupdateien ansammeln. Hierfür erstellen wir ein Perlskript und fügen dieses dann zu den Cronjobs hinzu. Das Skript habe ich von Burnz Barbosa und entsprechend dem Tutorial angepasst.

mit folgendem Inhalt füllen (Passe NR > 10 entsprechend der max. Backups an)

Die Datei mit folgendem Befehl ausführbar machen

Jetzt noch ins crontab eintragen:

Schlusswort

Ok, zugegeben: Die Einrichtung  war nicht ganz so einfach. Dass sich die Arbeit gelohnt hat merkt man aber spätestens dann wenn mal etwas schiefgeht und man sich bequem aus der Cloud seine Backups holen kann 🙂

Über den Author

Emanuel

teilt seine Begeisterung im Bereich Technik, DIY und Hausautomatisierung gerne auf seinem Blog coldcorner.de

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.