Raspberry Pi Teil III – Backup und Restore von Daten

ownCloud läuft bereits seit einigen Wochen auf dem Raspberry Pi, allerdings lediglich als Test, produktiv ist immer noch die Wolke auf der Synology Diskstation im Einsatz. Das hat einen ganz einfachen Grund: bisher habe ich noch keine Datensicherung eingerichtet. Inzwischen sind meine Versuche mit der Himbeere und ownCloud so weit, dass das fehlende Backup tatsächlich der einzige Hinderungsgrund für das Umschalten ist. Zeit also sich mit diesem Problem auseinanderzusetzen.

Recherchen im Internet förderten einige Ansätze zu Tage: meist werden umfangreiche Skripte eingesetzt, dankenswerterweise von den Autoren auch zur Verfügung gestellt. So richtig überzeugt hat mich keines davon, ganz einfach weil alle vorgestellten Skripte (natürlich) Anpassungen an die konkrete eigene Umgebung erfordern und hier sehe ich eine große Gefahr – ich kenne meinen Schlendrian nur zu gut und durch eigene Fehleingaben würde es mir wohl gelingen, auch das raffinierteste Skript zum Scheitern zu bringen 😉 . Für mich persönlich favorisiere ich deshalb die Lösung über Webmin, einfacher zu handhaben und weniger störanfällig als ein Bash-Skript …
 
Folgende Anforderungen stelle ich an mein Backup:
  1. Tägliches automatisches Backup der Daten aus ownCloud, also Dateien, Kontakte, Kalender und Datenbank
  2. Sicherung auf einen externen Datenträger, in meinem Fall die Diskstation
  3. einfache und schnelle Wiederherstellung der gesicherten Daten
Webmin ist ein recht umfangreiches Tool, welches für jeden Bereich der Systemverwaltung „Helferlein“ zur Verfügung stellt, so auch für das Backup. Bevor aber die Datensicherung konfiguriert werden kann, muss zunächst einmal die Verbindung zwischen dem Raspberry Pi und der Diskstation hergestellt werden …

Schritt 1 – Server verbinden

Hier gibt es einige Möglichkeiten mein Ziel verwirklichen – also das Schreiben der Backupdaten vom Raspberry auf ein beliebiges Verzeichnis der Diskstation zu ermöglichen. Nach einigem Stöbern entschied ich mich für die Verwendung des NFS-Protokolls, da beide Geräte dieses Protokoll unterstützen. Dazu zuerst an der Diskstation den Zugriff konfigurieren:
  • an der DS Systemsteuerung/Gemeinsamer Ordner aufrufen
  • Auswahlmenu Berechtigungen, NFS-Berechtigungen
  • Berechtigung für den Raspberry erstellen (siehe Bild)
  • Speichern
 
Am Raspberry Pi dieses Verzeichnis permanent in das Dateisystem einbinden.
  • in Webmin System/Lokale und Netzwerkdateisysteme
  • Network-Filesystem auswählen, Füge Mount hinzu
  • Mountpunkt sowie Host-Name und NFS-Verzeichnis angeben
  • alle anderen Punkte im Fenster können so belassen werden, Speichern
 
 
 
Nach Abschluss dieser vorbereitenden Schritte hat der Raspberry Zugriff auf das freigegebene NFS-Verzeichnis auf der Diskstation.

Schritt 2 – Backupauftrag erstellen

Vor der Erstellung des eigentlichen Auftrages muss noch eine Kleinigkeit erledigt werden: Installation des Paketes sqlite3 auf dem Raspberry Pi. Dieses Paket wird gebraucht, um vor dem eigentlichen Backup eine Sicherung der Datenbank (in meinem Fall SQLite) durchführen zu können. Eine einfache Kopie der Datenbankdatei kann diese zerstören bzw. unbrauchbar machen.
 
sudo apt-get install sqlite3
 
Nach dieser Installation nun also Erstellung des Backupauftrages:
  • in Webmin/System Dateisystem-Backup auswählen
  • Sicherung eines Verzeichnisses hinzufügen
  • Auswahl der zu sichernden Verzeichnisse, in meinem Fall /var/www/owncloud/data/admin und /var/www/owncloud/config
  • Angabe des Sicherungspfades /mnt/nas/admin/Backup
  • Name der Sicherungsdatei angeben
  • wichtig: Kommando vor dem Backup ausführen – hiermit erstellen wir eine Sicherung der Datenbankdatei owncloud.db aus dem laufenden Betrieb heraus und schieben sie in das zu sichernde Datenverzeichnis:
    sqlite3 /var/www/owncloud/data/owncloud.db .dump > /var/www/owncloud/data/admin/ownclouddb.bak 
  • Backup-Zeitplan auf „Täglich um Mitternacht“ stellen und aktivieren
 
„Speichern und jetzt Sichern“ um den gesamten Ablauf mal zu testen und von derselben Stelle eine Wiederherstellung des Backups probieren um auf der sicheren Seite zu sein.
 
Damit ist mein Problem gelöst: Tägliches Backup der Daten auf die Diskstation, die selbst 1x wöchentlich gesichert wird. Das sollte reichen. Am Schluss noch der SQL-Befehl um im Fall des Falles die Datenbank aus dem Dump wieder herstellen zu können:
sqlite3 owncloud.db .dump < ownclouddb.bak

Diesen Beitrag findet ihr unter Downloads/Computerthemen/Raspberry als PDF-Datei.
 
 
 

3 Antworten auf „Raspberry Pi Teil III – Backup und Restore von Daten“

  1. Moin Karsten,
    besten Dank für diese Anregung zwecks Backup.
    Habe das Problem, dass beim Versuch der Widerherstellung des Backups über Webmin („Stelle Backup vom Dateisystem her“) der Job zwar komplett durchläuft und die Herstellung aller Dateien laut log erfolgt sein sollte, jedoch wird kein Verzeichnis (hier das Verzeichnis „owncloud“ unter /var/www) angelegt und keine Datei geschrieben. Habe zu Testzwecken den gesamten Ordner „owncloud“ gelöscht. Bin in Webmin als root-User angemeldet, das log enthält zu jeder Datei Zeilen wie diese: „-rw-r–r– www-data/www-data 1216 2013-10-03 12:38 var/www/owncloud/status.php“
    Wäre echt schön, wenn er auch das tun würde, was er vorgibt.
    Freue mich auf Anregungen
    Clark

  2. Hallo Clark,

    bei der Erstellung des Restoreauftrags übersieht man eventuell die Einstellung „Nur Dateien in Sicherung zeigen?“ die standardmäßig aktiviert ist, also auf „ja“ steht. Dann macht „er“ dann auch genau dieses – er zeigt die im Backup enthaltenen Dateien mit Pfad und Zugriffsrechten an und schreibt nix. Ist mir beim ersten Versuch einer Datenrücksicherung auch passiert ;-).

    Ich denke, da liegt der Hase im Pfeffer …

    Karsten

  3. Hi Karsten,
    na das ist ja mal eine fantastische Funktion, da muss man erstmal drauf kommen, die zu benötigen 😉
    Ganz herzlichen Dank für den treffenden Tipp, genau das war es.
    Now I’m happy !!!
    Weiter so
    Clark

Schreibe einen Kommentar

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