Raspberry-Pi-Backup im Netzwerk speichern – ohne Extra-Software
Als was auch immer Ihr den Raspberry Pi nutzt, als Mediacenter mit Kodi, Retro-Spielekonsole, LAN-Radio oder Mailserver, es ist immer eine gute Idee, Euer Home-Verzeichnis mit Dateien und Einstellungen zu sichern. Und solange der Raspi im Netzwerk hängt, was wohl immer der Fall sein dürfte, geht das auch mit einem Tool, das bereits an Board ist: rsync.
Der Standard-Linux-Datei-Backupper kann mit minimalem Ressourcen-Bedarf wunderbare Backups erstellen: Filter für auszuschließende Verzeichnisse und Dateien, inkrementelle Backups für minimalen Speicherbedarf, in der Quelle gelöschte Dateien können im Ziel gelöscht werden und automatisch geht das ganze natürlich auch.
1. Netzwerk und Zugriff vorbereiten
In der Regel werdet Ihr Netzwerk-Freigaben lokal auf dem Pi gemountet haben - falls nicht, hier haben wir eine Anleitung. Und falls Ihr keine Tastatur und keinen Monitor am Pi hängen habt, braucht Ihr noch SSH-Zugriff, den wir Euch hier erklären.
2. Ausschlüsse vorbereiten
Legt eine Datei .r-exclude an (der Punkt versteckt die Datei), die Ordner enthält, die Ihr nicht sichern wollt. Habt Ihr im Home-Verzeichnis beispielsweise die Netzwerk-Freigaben Filme und /medien/Serien, schließt Ihr diese über
Filme* medien/Serien*
aus. Auch Dateiausschlüsse wie *.TXT könnt Ihr hier unterbringen - oder alternativ direkt im rsync-Aufruf, wie wir es unten machen.
3. rsync-Skript schreiben
Das rsync-Skript ist schnell geschrieben, beispielsweise in die Datei r-backup.sh
!/bin/bash
rsync -Pav --exclude-from=/home/mirco/.r-exclude exclude='*'.txt --delete /home/mirco /home/mirco/Backups/rsync_cubian
a steht für den Archiv-Modus, der folgende Optionen zusammenfasst: -r (rekursiv), -l (Verknüpfung als Verknüpfung kopieren), -p (Rechte bewahren), -t (Zeitstempel bewahren), -g (Guppen bewahren), -o (Eigentümer bewahren), -D (Spezial- und Gerätedateien bewahren). P steht für --partial (teilweise übertragene Dateien behalten) und --progress (Fortschritt anzeigen). Und v steht wie üblich für verbose, also detailliertere Ausgabe. Über --exclude-from= werden die Verzeichnisse in der Datei .r-exclude (über den anführenden Punkt wird die Datei "versteckt") ausgeschlossen und über exclude= TXT-Dateien. Über --delete werden Dateien im Backup/Ziel gelöscht, die in der Quelle gelöscht wurden. Dann folgen das zu sichernde Verzeichnis und abschließend das Zielverzeichnis - hier der gemountete Ordner aus dem Netzwerk. Das anfängliche #!/bin/sh ist obligatorisch für Shell-Skripte.
Kleiner Hinweis noch zum delete-Parameter: Das Gute daran ist, dass das Backup platzsparend den aktuellen Stand der Quelle hat. Das Schlechte: Löscht Ihr versehentlich Dateien in der Quelle, und läuft dann das Skript - nun, dann sind die Dateien auch im Backup futsch. Also: Überlegt einsetzen!
Jetzt macht Ihr das Skript noch ausführbar:
chmod +x r-backup.sh
Und testet mit:
sudo bash r-backup.sh
4. Skript automatisieren
Wenn das Skript jetzt jeden Tag um 1.00 Uhr laufen soll, müsst Ihr es in die crontab eintragen. Bei Standard-Freigaben werdet Ihr root-Rechte benötigen, um das Skript auszuführen - daher beim Test auch der Aufruf mit sudo. In der Praxis kommt es hier immer wieder zu Problemen, bei dem hiesigen System funktioniert folgende Lösung: Kopiert das Skript zunächst mittels
sudo cp r-backup.sh /root
in Roots Verzeichnis. Öffnet dann die crontab mit
sudo crontab -e
Hier gebt Ihr für tägliche Backups um 1.00 Uhr folgendes ein:
- 1 * * * /root/r-backup.sh
Das bedeutet: Beliebige (*) Minute, Stunde 1, beliebiger Tag im Monat, beliebiger Monat, beliebiger Tag der Woche - also jeden Tag um 1.00 Uhr. Diese Notation ist nicht gerade nutzerfreundlich, aber einmal verstanden, auch nicht sonderlich kompliziert.
Das praktische rsync bietet noch etliche weitere Optionen, ist schlank, schnell, immer verfügbar (sogar auf QNAP- und Synology-NAS-Systemen) - einmal eingerichtet, werdet Ihr es nicht mehr bemerken, aber immer ein zuverlässiges Backup haben. Klar gibt es auch grafische Lösungen für Backups, aber wer mit rsync und cron klar kommt, wird nie wieder etwas anderes benötigen - und nochmal: Es ist verdammt zuverlässig!
P.S.: Wenn rsync Fehlermeldungen ausgibt, findet Ihr die im lokalen Mail-Postfach - gebt einfach den Befehl mail ein. P.P.S: Das ganze funktioniert natürlich auch mit echten Linuxen, aus Virtuellen Maschinen heraus oder mit dem dem Pi weit überlegenen Cubietruck.
Hallo Marco danke für den Artikel. Gibt es auch irgendwie die Möglichkeit ein komplett Backup der SD Karte zu machen? Ich habe nämlich ein Hausautomatisierungs System auf dem PI laufen. Das würde ich gerne im Notfall auf innerhalb kürzester Zeit auf eine neue SD Karte schieben und wieder weiter benutzen.
Die Kollegen hier haben es beschrieben: https://jankarres.de/2013/08/raspberry-pi-image-backup-erstellen/ Auf MacOS ist es noch einfacher, da musst Du nur den PiCloner (https://sourceforge.net/p/picloner/wiki/Home/) verwenden. Der ist eigentlich selbsterklärend. Bei den SD-Card-Preisen wäre es aber vielleicht sinnvoll, einfach mehrere Karten mit mehreren Systemen anzulegen.
Die Kollegen hier haben es beschrieben: https://jankarres.de/2013/08/raspberry-pi-image-backup-erstellen/ Auf MacOS ist es noch einfacher, da musst Du nur den PiCloner (https://sourceforge.net/p/picloner/wiki/Home/) verwenden. Der ist eigentlich selbsterklärend. Bei den niedrigen SD-Card-Preisen wäre es aber vielleicht sinnvoll, einfach mehrere Karten mit mehreren Systemen anzulegen, die Du bei Bedarf austauschen kannst.
Guten Abend,
ich möchte den RasPi dazu nutzen, bestimmte Pfade meines Netzwerks, z.B. \server\daten*.* auf einer USB-Platte regelmäßig und differentiell zu sichern. Hast Du bitte einen Tipp für mich, wie ich es am einfachsten machen kann (Programm oder …)?
Danke, Michael
Soweit ich weiß ist rsync auch bei Mac Standard, insofern: ja – auch wenn sich die Syntax möglicherweise leicht unterscheidet, kommt schon mal vor
Klappt das auch mit anderen Unix-Systemen, etwa Mac OS X?