Ich habe hier eine gute Anleitung zum Sichern des Pi gefunden:Pi erstellt automatisch Backups von sich selbst
Hier wird beschrieben, wie mit einem Script regelmäßig Sicherungen angelegt werden.
Dazu wird ein kleines bash Script verwendet, welches diese Aufgabe über den cron - Daemon (dazu später mehr) erledigt. Es hält eine gewisse Anzahl von Backups vor und legt sie in Unterverzeichnissen ab, die den Hostnamen der Pi haben. Somit können beliebig viele Pis, die aber unterschiedliche Hostnamen haben müssen, ihre Backups auf dem Backupmedium ablegen. Das Backup kann entweder ein dd Backup, ein tar Backup ein xbmc Backup oder ein rsync Backup sein.
Ich zitiere aus der Internetseite:
Funktionsweise
Das Script fertigt bei jedem Aufruf ein Backup der laufenden Pi an. Es kann eine maximale Anzahl von Versionen definiert werden die vorzuhalten sind. Bei Überschreitung dieser Anzahl wird das älteste Backup gelöscht. Zusätzlich kann eine eMail Adresse konfiguriert werden, die beim Start und Ende des Backupvorgangs eine eMail erhält.
Verschiedene Backupmethoden stehen zur Verfügung:
- dd Backup der ganzen SD Karte
- tar Backup eines beliebigen Verzeichnisses sein, wobei bei / als Verzeichnis die gesamte Pi gesichert wird
- xbmc Backup, welches das xbmc Konfigurationsverzeichnis in einem tar sichert
- rsync Backup, wobei Hardlinks benutzt werden um die Datenmenge in den Backupversionen zu reduzieren. Dazu muss aber das Filesystem mit ext3 oder ext4 formatiert sein.
Was sind die Vor- und Nachteile der jeweiligen Backupmethoden ?
Ein dd Backup erstellt ein in sich konsistentes binäres Abbild der SD Karte. Dabei wird immer die ganze SD Karte gelesen und gesichert. Das bedeutet dass auch Daten gesichert werden, die sich nicht geändert haben. Auch bedeutet es, dass zum Restore die SD Karte wieder genau so groß sein muss wie die Original SD Karte. Diese Methode belastet die SD Karte sehr stark. Ein Restore ist sehr einfach.
Ein xbmc Backup sichert nur die Verzeichnisse von xbmc. D.h. man muss zum Restore eine schon existierende xbmc SD Karte haben und es werden dort die gesicherten Einstellungen von xbmc restored. Das Backup ist klein, aber der Restore erfordert erst das Aufsetzen einer neuen xbmc SD Karte mit einem initialen xbmc Stand. Diese Methode ist sehr schnell.
Ein tar Backup sichert die gesamte SD Karte, wobei allerdings das Backup nicht so groß ist wie bei einem dd Backup da nur die Daten gesichert werden, die tatsächlich existieren. Deshalb kann auch ein tar Backup auf eine SD Karte restored werden, die kleiner ist als die original SD Karte - sofern die gesicherten Daten auf die neue SD Karte passen. Diese Method belastet die CPU stark. Ein Restore erfordert Kenntnisse von tar.
Ein rsync Backup sichert nur die Daten, die sich zum letzten Backup geändert haben. Durch die Hardlinks des ext2/ext3 Dateisystems wird dafür gesorgt, dass trotzdem ein konsistenter Stand des Backups vorliegt. Allerdings werden die Daten nicht komprimiert. Das hat aber wiederum den Vorteil, dass man sehr gezielt einzelne Dateien ganz einfach per copy aus dem Backup zurückholen kann. Diese Methode ist sehr schnell nach dem ersten Backup. Ein Restore erfordert Kenntnisse von rsync.
|
Voll-
backup
|
Backup-
zeit
|
Backup-
größe
|
Daten-kompression
|
CPU belastet
|
Karte belastet
|
Selektiver Restore möglich
|
Dateisystem
|
dd
|
ja
|
lang
|
gross
|
nein
|
mittel
|
hoch
|
nein
|
alles
|
xbmc
|
nein
|
kurz
|
klein
|
ja
|
nein
|
kaum
|
ja
|
alles
|
tar
|
nein
|
mittel
|
mittel
|
ja
|
ja
|
mittel
|
ja
|
alles
|
rsync
|
nein
|
kurz
|
mittel
|
nein
|
nein
|
kaum
|
ja
|
ext2/ext3
|
Das Script wird mit folgendem Befehl heruntergeladen:
wget http://www.linux-tips-and-tricks.de/de/downloads/raspibackup-sh/download -O raspiBackup.sh
Danach habe ich es nach /usr/local/bin/ verschoben, um dort alle Scripte zu sammeln und auszuführen.
mv raspiBackup.sh /usr/local/bin/
Danach muss das Script noch ausführbar gemacht werden:
cd /usr/local/bin/
sudo chmod 755 raspiBackup.sh
Die folgenden Parameter können beim Aufruf mit angegeben werden. Falls sie fehlen, werden die im Script definierten Standardwerte genommen. Diese können natürlich im Script den lokalen Gegebenheiten angepasst werden.
Aufrufparameter
-t:
Typ des Backups, der entweder dd, tar, rsync oder xbmc sein kann. dd und tar ist ein Vollbackup während xbmc ein tar Backup des /home/pi/.xbmc Ordners ist. Ein rsync Backup sichert nur die neuen Dateien in einem Lauf und benutzt Hardlinks und reduziert dadurch die Sicherungszeit signifikant. (Default: rsync)
-p:
Pfad auf das Backupmedium wo das Backup abgelegt wird. Das kann eine lokale USB Platte, ein NAS Speicher im Netz über CIFS oder nfs sein oder auch per davfs ein Cloudspeicher.(Default: /backup)
-k:
Anzahl der Backups, die vorzuhalten sind (Default: 3)
-o:
Befehle um Services vor dem Backup zu stoppen. Z.B. bei xbmc service xbmc stop . Mehrere Befehle müssen durch ; getrennt werden.
-a:
Befehle um Services nach dem Backup wieder zu starten. Z.B. bei xbmc service xbmc start . Mehrere Befehle müssen durch ; getrennt werden.
-l:
Log level (0-2), 0=keiner, 1=info, 2=debug (Default: 0)
-e:
email Addresse, die eine Status-email des backups zugesendet bekommt bzw im Fehlerfalle das Fehlerprotokoll (kein Default)
-b:
zu sicherndes Verzeichnis (Default: /home/pi)
-v:
Ausführliche Ausgabe der Backupfunktionen werden damit eingeschaltet
-z:
zip dd backup (Default: no)
-s:
email Programm welches benutzt wird {mail|sendEmail} (Default: mail)
-E
Optionale weitere Parameter die im Email - Programmaufruf mitgegeben werden
Damit das Script regelmäßig automatisch ausgeführt wird, ist noch ein entsprechender Eintrag in der crontab vorzunehmen.
Im root Verzeichnis folgenden Befehl ausführen:
sudo crontab -e
Hier ist am Ende folgende Zeile einzufügen (Parameter beziehen sich auf meine Konfiguration):
0 0 * * * /usr/local/bin/raspiBackup.sh -p /media/usbstick/ -t rsync -k 7 -b /
Die Aufrufparameter geben an, dass täglich um 0:00 ein backup erstellt wird, das Backupmedium unter /media/usbstick/ gemountet ist, ein vollständiges rsync Backup des Systems zu erstellen ist und 7 Backupversionen vorgehalten werden sollen.
Nachdem ich einige Startschwierigkeiten mit dem Script hatte (es wurde zwar ein Verzeichnis angelegt, aber keine Sicherung vorgenommen), habe ich etwas herum gesucht und bin schließlich auf einen nicht dokumentierten Parameter –5 gestoßen. Bei der Angabe dieses Parameters wird verhindert, dass dies Script die 5. Partition auf der SD-Karte, die von NOOBS angelegt wurde, mit gesichert wird. Ein restore von diesem Backup ist dann nur manuell möglich, aber nicht per Script.
Auch habe ich die Häufigkeit der Backups reduziert. Es wird jetzt nur noch am Sonntag ein Backup angelegt. Dies kann jederzeit wieder geändert werden nach Bedarf.
Somit lautet der korrigierte Eintrag in crontab
0 0 * * 0 /usr/local/bin/raspiBackup.sh -p /media/usbstick/ –5 -t rsync -k 7 -b /
Ich werde das Ganze mal beobachten und ggf. die Werte anpassen. Auch die Email - Benachrichtigung wird noch ergänzt (Email Programm muss noch installiert werden). Mittelfristig werde ich ein Backup in die Cloud anstreben (evtl.. T-Online).