raspiBackup ermöglicht Backups von Raspberries manuell oder automatisch in regelmäßigen Abständen von einem laufenden System zu erstellen. D.h. es wird die SD Karte im laufenden Betrieb gesichert. Eine ausgelagerte Rootpartition wird dabei mitgesichert. Dabei muss die Raspberry nicht angehalten und manuell eingegriffen werden sondern nur alle wichtigen Services vor dem Backup gestoppt und nach erfolgtem Backup wieder gestartet werden. Backups können auf alle Geräte, die an Linux gemounted werden können, gesichert werden (USB Stick, USB Platte, nfs, samba, sshfs, ...). Als Backupmethoden stehen dd, tar und rsync mit und ohne Hardlinks zur Verfügung. Die erstellten Backups können mit raspiBackup auf beliebigen SD Karten unter Windows oder Linux wiederhergestellt werden. Raspberry 3 USB Boot Images und NOOBS Images werden unterstützt.
Auf Youtube existiert auch ein Video auf dem raspiBackup vorgestellt wird sowie am Ende eine Demo der Installation von raspiBackup gegeben wird.
Für Freunde von Facebook exisitiert eine Facebookgruppe zu raspiBackup wo aktuelle Neuigkeiten und Randinformationen zu raspiBackup publiziert werden. Wichtige Informationen werden auch auf Twitter #raspiBackup veröffentlicht.
Der Code von raspiBackup ist reiner bash Code und steht unter der GPL auf github zur Verfügung.
Hinweise
- Klicke
um auf Github Fragen oder Probleme zu raspiBackup als Issues zu erstellen. Die Issues können gerne auch in Deutsch erstellt werden. So kann ich Fragen und Problemberichte tracken und Du bekommst eine Benachrichtigung über meine Antworten.
- Klicke
um auf Facebook aktuelle Aktivitäten und Randinformationen zu raspiBackup zu erfahren.
- Klicke
um raspiBackup auf Twitter zu folgen.
- Klicke
um einen Kommentar zu erstellen.
Wo lese ich jetzt weiter?
Wer eben mal schnell raspiBackup ausprobieren möchte findet hier eine Schritt für Schritt Anleitung wie raspiBackup in 5 Minuten installiert ist und dann sofort ein Backup erstellt werden kann.
Wer sich einen schnellen Überblick über die Funktionalität von raspiBackup verschaffen will sollte die Zusammenfassung lesen. Im FAQ Teil finden sich häufig gestellte Fragen sowie deren Antworten, die man sich immer durchlesen sollte.
Alle Funktionen und Einsatzgebiete von raspiBackup sind tabellarisch in der Funktionsübersicht zusammengetragen. Wer raspiBackup installieren will findet die Beschreibung bei der Installation. Alle Aufrufparameter von raspiBackup sind einmal alphabetisch sowie thematisch sortiert beschrieben. Wie man ein Backup mit raspiBackup zurückspielt ist hier beschrieben.
Weiterhin gibt es detailierte Informationen zu Erweiterungsmöglichkeiten von raspiBackup, wie man sich bei Fehlermeldungen und Fehlern von raspiBackup verhalten soll und eine detailierte Beschreibung sowie eine Tabelle der Vor- und Nachteile der Backupmethoden und eine Beschreibung der Backupmodi. Eine Liste der Bugfixes und Erweiterungen in den alten und der zukünftigen Versionen von raspiBackup findet sich hier. Wer eine Synology für den Backup benutzen will findet hier nützliche Tipps. Die Entwicklung von raspiBackup wurde durch Feedback, Testen und andere Hilfe von vielen Leuten unterstützt.
Noch weitere Themen finden sich im folgenden Inhaltsverzeichnis.
Inhaltsverzeichnis
- Zusammenfassung
- Funktionsübersicht
- Übersichtsbild
- Installation
- Aufrufparameter (alphabetisch sortiert)
- Aufrufparameter (thematisch sortiert)
- Erweiterungsmöglichkeiten
- Restore
- Fehlermeldungen und -suche
- Backuptypen und Entscheidungsbaum
- Vergleich partitionsorientierter Backup und normaler Backup
- Backupverzeichnisstruktur
- Haftungsausschluss
- Updatestrategie
- Regressiontests
- Weitere Seiten zu raspiBackup
- Häufige Fragen (FAQ)
- Versionshistorie
- Benutzung von Synology
- Hilfreiche Links zum Thema Backup
- Versionshistorie
- Danksagungen
- Trinkgeld
- Weitere Backuptools fuer die Raspberry
Zusammenfassung
Eine regelmäßige Sicherung von Raspberry Pis ist wichtig um im Falle von einem SD Kartenausfall oder auch unbeabsichtigten Änderungen immer wieder das System auf einen vorherigen Zustand zurücksetzen zu können. raspiBackup ermöglicht es, dass die Raspberry regelmäßig von sich selbst ein Backup erstellt und auf einem extern angebundenen Speichermedium wie usb Stick und -platte, nfs Server, smbfs/cifs/Samba Laufwerk, sshfs, davfs/webdav (Cloud) usw. (Siehe dazu Wie kann man von der Raspberry Pi auf externe Daten zugreifen) ablegt. Die Benutzung einer Synology als Backupspace ist ebenfalls möglich.
Eine einfache Wiederherstellung des gesicherten Backups nimmt raspiBackup natürlich auch vor.
Vor der Sicherung sollten alle aktiven Services gestoppt und nach dem Backup wieder gestartet werden um einen konsistenten Backup zu erhalten. Die notwendigen Befehle dazu können entweder über Parameter definiert werden oder es kann ein Beispielwrapperscript benutzt werden, welches dann wesentlich mehr und programmatisch gesteuerter Aktionen vor und und nach dem Backup vornehmen kann. Das automatische Mounten und Unmounten des Backupspaces ist schon im Beispielwrapperscript enthalten. Weiterhin gibt es Erweiterungspunkte für Plugins in raspiBackup um eigene Scripts vor und nach dem Backupvorgang einzubinden.
Es stehen zwei Backupmodi zur Verfügung: Im normalen Backupmodus werden die beiden SD Kartenpartitionen mmcblk0p1und mmcblk0p2 gesichert. Sofern die Rootpartition mmcblk0p2 auf eine externe Partition (USB Stick, USB Platte, ...) ausgelagert wurde wird diese externe Partition anstatt mmcblk0p2 gesichert. Im zweiter Backupmodus, dem partitionsorientierten Backupmodus, werden alle bzw eine definierte Anzahl von Partitionen der SD Karte gesichert. Damit kann somit eine NOOBS SD Karte sowie Images mit mehr als zwei Partitionen gesichert werden.
Als Backupmethoden stehen zur Auswahl: dd Backup, tar Backup, (beides auch gezipped) und ein rsync Backup. Die einzelnen Backupmethoden sind im Detail hier nachzulesen. Dort befindet sich auch ein Entscheidungsbaum um schneller die richtige Backupmethode zu finden. Die maximale Anzahl von vorzuhaltenen Backups ist konfigurierbar. Zur Aktivierung von raspiBackup muss man, nachdem man das Script entsprechend ausgetestet hat, den Scriptaufruf in die Crontab der Raspberry Pi aufnehmen. Danach bekommt man regelmäßig eine eMail zugeschickt, die einen über das Ergebnis des Backups informiert. Die Meldungen von raspiBackup erfolgen in Deutsch oder Englisch
Funktionsübersicht
- Automatische regelmäßige Sicherung einer laufenden Raspberry Pi (Sie sichert sich selbst)
- Raspberry3 wenn sie ohne SD Karte im neuen USB boot mode betrieben wird ist unterstützt
- Ähnlich aufgebaute SoCs werden auch unterstützt (Banana Pi, Ondroid, Beagle Board, Cubieboard, ...) Weitere Details dazu hier
- Raspbian, Arch, Ubuntu, Volumio, NOOBs ...
- Der partitionsorientierte Backupmodus sichert eine beliebige Anzahl von Partitionen der SD Karte und kann somit NOOBs Images sichern
- Sicherung und Wiederherstellung ist unabhängig davon welches Betriebssystem (Linux, Windows oder Mac) für den Zugriff auf die Raspberry Pi benutzt wird
- Windows oder Mac Benutzer nutzen einfach zur Wiederherstellung des Backups die Raspberry
- Windows Benutzer können dd Backups mit win32diskimager restoren
- Linux Benutzer können das Backup auf ihrem Linux System wiederherstellen oder auch die Raspberry benutzen
- Beliebige Backupziele möglich, z.B.
- Externer USB Stick
- Externe USB Platte
- Synology
- cifs/samba Netzwerklaufwerk
- nfs Netzwerklaufwerk
- sshfs Netzwerklaufwerk
- webdav Netzwerklaufwerk
- ftpfs Netzwerklaufwerk
- Generell jedes Device welches unter Linux gemounted werden kann
- Einfacher Restore der Sicherung
- Ein externes Rootfilesystem auf einer Platte oder einem USB Stick wird automatisch beim normalen Backupmodus mitgesichert und restored bei tar oder rsync backup (raspiSD2USB.py hilft beim Umziehen)
- Einsetzbar auch zum Klonen einer Raspberry Pi
- Einfache Installation. Die wichtigsten Optionen werden abgefragt und in die Konfigurationsdatei geschrieben.
- Meldungen in Deutsch und Englisch
- Diverse Aufrufparameter um den Backup zu steuern
- dd, tar und rsync Backup möglich (-t Option). rsync benutzt bei einer ext3/ext4 Partition Hardlinks um den benötigten Plattenplatz zu minimieren
- dd und tar kann gezippt werden um die Sicherung noch zu verkleinern (-z Option)
- pishrink kann zur Verkleinerung von dd Images über ein Wrapperscript benutzt werden
- dd Backup sichert per Option einschaltbar nur den von den Partitionen belegten Platz und nicht die ganze SD Karte
- Boot backup benutzt per Option einschaltbar Hardlinks für die sich selten ändernde Bootpartition und spart dadurch Backupspeicherplatz
- Verschiedene Backuptypen können pro System gemischt werden (z.B. pro Tag ein rsync Backup, jeder Woche ein dd Backup)
- Automatisches Stoppen und Starten von aktiven Services vor und nach dem Backup (-a und -o Option)
- Automatisches Anpassen der zweiter Rootpartition wenn die Restore SD Karte kleiner oder größer als die Original SD Karte ist
- Ein Beispielscript hilft um vor und nach der Backup weitere Aktionen vorzunehmen wie z.B. das Mounten und Unmounten des Backupspaces
- Einfache Erweiterung der Scriptfunktion durch Plugins (Option -N)
- Anzahl der vorzuhaltenden Backups ist konfigurierbar (-k Option)
- eMail Benachrichtigung über den Backuplauf und Backupverlaufsstatus (-e Option)
- Unterstützte eMailClients: mailx/mail, sendEmail, ssmtp und msmtp (-s Option)
- Nicht unterstützte eMailClients können durch ein eMailPlugin eingebunden werden
- rsync benutzt Hardlinks um die Backupgröße zu reduzieren sofern sie vom Backupfilesystem unterstützt sind
- Automatische Benachrichtigung, wenn eine neue Scriptversion verfügbar ist (-n Option)
- Einfacher Update von raspiBackup durch die aktuellste Version (-U Option)
- Einfache Wiederherstellung einer älteren Scriptversion sofern sie mit der Updatefunktion installiert wurde (-V Option)
- Einfache Verteilung von neuen Scriptversionen auf eine größere Menge von Hosts (-y Option)
- Beliebige Verzeichnisse und Dateien können aus dem Backup ausgeschlossen werden (-u Option)
- Sicherung von einer beliebigen Anzahl von Raspberries in einem Backupverzeichnis
- Unterstuetzung von Volumio
Übersichtsbild
Installation
Der schnellste und Standardweg raspiBackup in ca. 5 Minuten zu installieren und dann sofort einen Backup zu erstellen ist auf raspiBackup Schnellstart beschrieben. Wer raspiBackup sehr schnell aus der Befehlszeile mit seiner Standardkonfiguration installieren will findet dort auch die notwendige Information. Wer raspiBackup manuell installieren sollte der Beschreibung auf dieser Seite folgen.
Aufrufsyntax und -optionen
raspiBackup muss als Benutzer root oder per sudo aufgerufen werden. Die Aufrufsyntax ist
raspiBackup.sh Option1 Option2 Option3 ... Backupverzeichnis
Es stehen viele Optionen zur Verfügung um das Verhalten von raspiBackup zu steuern. Die wichtigsten Optionen sind in rot gekennzeichnet. Verschiedene Optionen haben noch Parameter, wie z.B. -k 3 oder -m 1.Die Standardoptionen können in einer Konfigurationsdatei /usr/local/etc/raspiBackup.conf überschrieben werden. Eine Beispielkonfigurationsdatei die die Standardoptionen benutzt kann hier heruntergeladen werden. Anschliessend muss sie entsprechend umbenannt und in das richtige Verzeichnis kopiert werden.Alle Optionen die etwas ein- oder ausschalten könne durch ein angehängtes + oder - gezielt ein oder ausgeschaltet werden. Beispiel: Die Option -z sowie die Option -z+ schaltet die Backupcompression ein. Mit der Option -z- wird dagegen die Backupcompression ausgeschaltet. Egal was in der Konfigurationsdatei in dem Parameter DEFAULT_ZIP_BACKUP steht. Damit kann eine Option in der Befehlszeile ausgeschaltet werden obwohl sie in der Konfigurationsdatei eingeschaltet ist.
Neben /usr/local/etc/raspiBackup.conf gibt es weitere Konfigurationsdateien die sofern vorhanden, gelesen werden. Sie werden in folgender Reihenfolge eingelesen und überschreiben die vorherig eingelesenen Optionen. Zuletzt überschreiben die Optionen, die beim Aufruf mitgegeben werden die Konfigurationsoptionen.
Priorität | Dateiname |
5 | /usr/local/etc/raspiBackup.conf |
4 | ~/.raspiBackup.conf |
3 | $(pwd)/.raspiBackup.conf |
2 | -f <configFile> |
1 | Aufrufoptionen |
Alphabetische Sortierung
Option | Funktion | Standard | Option in der Konfigdatei |
-a |
Befehle um Services nach dem Backup wieder zu starten. Z.B. bei Samba "service smbd start" (Achtung: Anführungszeichen an Anfang und Ende). Diese Option ist zusammen mit der Option -o obligatorisch. Mehrere Befehle müssen durch && getrennt werden. Alternativ kann ein Wrapperscript benutzt werden (Beispiel siehe unten). Diese Befehle sollten die exakte umgekehrte Reihenfolge haben wie die Befehle beim Parameter -o. Beispiel:
Soll wirklich kein Service gestartet werden muss der Doppelpunkt ":" als Argument mitgegeben werden. Siehe dazu auch FAQ #1 und FAQ #18 Achtung: Die Befehle werden als root ausgeführt. Es ist kein sudo notwendig. |
Keiner |
DEFAULT_ STARTSERVICES |
-A |
Das Laufzeitlog wird in der email mitgeschickt | Nein |
APPEND_ LOG |
-b | Blocksize die beim dd Backup benutzt wird | 1MB |
DD_ BLOCKSIZE |
-B |
Die Bootpartition wird nicht per dd sondern per tar gesichert. Hinweis: Diese Option hat keine Funktion wenn der partitionsorientierte Modus benutzt wird, also Option -P benutzt wird oder DEFAULT_PARTITIONBASED_BACKUP=1 in der Konfiguration gesetzt ist. |
Nein |
DEFAULT_ TAR_ BOOT_ PARTITION_ ENABLED |
-D | Weitere Aufrufoptionen für das dd Backup (z.B. "conv=notrunc,noerror,sync") | Keiner |
DD_ PARMS |
-e | email Addresse, die eine Status-email des backups zugesendet bekommt bzw im Fehlerfalle das Fehlerprotokoll | Keiner |
|
-E |
Optionale weitere Parameter die im eMailProgrammaufruf mitgegeben werden. Für sendEmail muss er z.B. wie folgt aussehen: "-f absender.mail@absenderdomain -s smtp-server:587 -xu Username -xp Password". Achtung: Die Parameter für -E müssen in Anführungszeichen " eingeschlossen sein. Speziell zum Testen der eMail Benachrichtigungsfunktion ist der Parameter -F hilfreich. Achtung: Wenn der Parameter -l 1 benutzt wird steht das Password im Log und sollte vor Verschicken des Logs manuell maskiert werden. |
Keiner |
EMAIL_ PARMS |
-f | Angabe einer Konfigurationsdatei die als letztes eingelesen wird. Siehe hier alle möglichen Konfigurationsdateien und ihre Einlesereihenfolge. | Nein | |
-F | Fake backup. Diese Option ist hilfreich beim initialen Testen von raspiBackup. Der eigentliche lange Backup wird dadurch nicht angestossen - aber sämtliche Optionsprüfungen wie auch das Senden der BenachrichtigungseMail. | Nein | |
-g | Mit dieser Option wird beim Backup und Restore eine Fortschrittsanzeige angezeigt | ||
-G | Festlegung der Sprache der Meldungen. Mögliche Sprachen sind DE (Deutsch) und EN (English). Interessenten, die die Meldungen in andere Sprachen übersetzen wollen können sich gerne melden |
Eingestellte Systemsprache auf der Raspi. EN (Englisch) wird benutzt falls die Systemsprache nicht unterstützt wird |
DEFAULT_ LANGUAGE |
-h | Ausgabe der Aufrufsyntax mit seinen Parametern | Nein | |
-k | Anzahl der Backups, die pro Backuptyp vorzuhalten sind sofern es nicht durch folgende Option überschrieben wird. D.h. es werden 3 dd, 3 tar und 3 rsync Backups vorgehalten. | 3 |
KEEPBACKUPS |
--keep_<type>
|
Ab Version 0.6.4.3: Anzahl der Backups die für den jeweiligen Backuptypen vorgehalten werden. <type> kann jeder Backuptyp sein, also dd, ddz, tar, tgz oder rsync |
Parameter für Option -k |
DEFAULT_ KEEPBACKUPS_ {DD|DDZ|TAR| TGZ|RSYNC} |
-l |
Log level definiert ob ein Debuglog erstellt wird: - off -> Es wird kein Debuglog erstellt - debug -> Es wird ein Debuglog erstellt Achtung: Die Logausgabe kann in manchen Fällen sensitive Informationen enthalten (Z.B. externe statische IP Adressen, eMailAdressen, Kennwörter für mount Befehle oder email Server, ...) . |
off |
DEFAULT_ LOG_ LEVEL |
-m |
- minimal -> Nur wichtige Meldungen werden ausgegeben - detailed -> Viele Meldungen über den Fortschrit werden ausgegeben |
minimal |
DEFAULT_ MSG_ LEVEL |
-M |
Mit der Option kann der Name des Backupverzeignisses modifiziert werden. Das erlaubt einen kurzlebigen nicht permananten Backup mit einem sprechenden Namen zu erstellen. Beispiel: Der Hostname ist idefix und der Parameter für -M ist "Initial boot from SD". Dann wird folgendes Verzeichnis angelegt: idefix-Initial_boot_from_SD/idefix-rsync-backup-20170103-170717 |
||
-n | Benachrichtigung wenn eine aktuellere Scriptversion zum download verfügbar ist. | Ja |
NOTIFY_ UPDATE |
-N | Aktivierung von eigenen Scripterweiterungen (Plugins). Siehe dazu diese Seite die auch zwei Beispielerweiterungen anbietet, die die CPU Temperatur und die Speicherbelegung vor und nach dem Backuplauf ausgeben. | Keiner |
EXTENSIONS |
-o |
Befehle um Services vor dem Backup zu stoppen damit kein inkonsistentes Backup erzeugt wird. Z.B. bei Samba "service smbd stop" (Achtung: Anführungszeichen an Anfang und Ende). Diese Option ist zusammen mit der Option -a obligatorisch. Mehrere Befehle müssen durch && getrennt werden. Alternativ kann ein Wrapperscript benutzt werden (Beispiel siehe unten). Diese Befehle sollten die exakte umgekehrte Reihenfolge haben wie die Befehle beim Parameter -a. Beispiel:
Soll wirklich kein Service gestoppt werden muss der Doppelpunkt ":" als Argument mitgegeben werden. Siehe dazu auch FAQ #1 und FAQ #18 Achtung: Die Befehle werden als root ausgeführt. Es ist kein sudo notwendig. |
Keiner |
DEFAULT_ STOPSERVICES |
-P |
Einschalten des partitionsorientierten Backupmodus, der alle oder eine bestimmte Anzahl von Partitionen de SD Karte sichert. Dieser Modus sollte bei NOOBS Images für tar und rsync Backups gewählt werden und wenn mehr als zwei Partitionen auf der SD Karte sind. Soll das NOOBS Image per dd gesichert werden so dass es mit win32diskimager zu restoren ist muss dazu der normale Backupmodus mit dd Backup benutzt werden. Siehe auch den Parameter -T. Hinweis: In diesem Modus kann keine externe root Partition mitgesichert werden. |
nein |
PARTITIONBASED_ BACKUP |
-s |
email Program welches benutzt wird {mail|sendEmail|ssmtp|msmtp}. Für mailx muss auch mail angegeben werden. Für sendEmail muss der Parameter -E zusätzlich genutzt werden für weitere obligatorische Parameter (Siehe Parameter -E Beschreibung für Details) Es kann auch ein eMailPlugin benutzt werden um eMails zu verschicken. Damit können beliebige weitere eMailClients in raspiBackup eingebunden werden. Der -s Parameter muss dann mailext sein. Details zum eMailPlugin siehe diese Seite |
DEFAULT_ MAILPROGRAM |
|
--smartRecycle | Ab Version 0.6.4.4 schaltet diese Option die intelligente Rotationsstrategie ein. Details dazu sind hier beschrieben. | aus |
DEFAULT_ SMART_RECYCLE |
--smartRecycleDryrun | Ab Version 0.6.4.4 schaltet diese Option den Testmodus der intelligenten Rotationsstrategie ein. Details dazu sind hier beschrieben. | ja |
DEFAULT_ SMART_ RECYCLE_ DRYRUN |
--smarteRecycleOptions | Ab Version 0.6.4.4 definiert diese Option Parameter der intelligenten Rotationsstrategie. Details dazu sind hier beschrieben. | "7 4 12 1" |
DEFAULT_ SMART_ RECYCLE_ OPTIONS |
--systemstatus | Ab Version 0.6.3.4 wird eine Liste der der aktiven Services und offenen Dateien in der Debugdatei erstellt | ||
-t |
Typ des Backups, der entweder dd, tar oder rsync sein kann. rsync benutzt bei einer ext3/ext4 Partition Hardlinks um dien benötigten Speicherplatz zu minimieren. Detailinformationen zu den Backuptypen Ein externes Rootfilesystem wird automatisch bei tar oder rsync Backup mitgesichert sofern nicht die Option -P benutzt wird. Mit der Option -z werden die Backups zusätzlich noch gezippt bzw verkleinert. Hinweis: Beim dd Backup kann durch den Konfigurationsparameter DEFAULT_DD_BACKUP_SAVE_USED_PARTITIONS_ONLY Backup-zeit und -platz gespart werden. Details zu dem Parameter siehe am Ende der Tabelle. Siehe dazu auch FAQ #16 |
dd |
DEFAULT_ BACKUPTYPE |
--timestamps | Durch diese Option wird vor jeder Meldung ein Zeitstempel ausgegeben. | Keiner |
DEFAULT_ TIMESTAMPS |
-T |
Falls der partitionsorientierte Backupmodus mit der Option -P gewählt wurde kann mit dieser Option definiert werden welche Partitionen gesichert werden sollen. Beispiel: -T "1 2 5" sichert die ersten beiden und die fünfte Partition. Mit * werden alle Partitionen gesichert. |
* |
PARTITIONS_ TO_ BACKUP |
-u |
Achtung: Die Parameter müssen der jeweiligen Syntax des Backuptools gehorchen und führen sonst zum Abbruch des Backups. Für rsync oder tar könnte die Liste wie folgt aussehen:
"--exclude=/backup/* --exclude=/rsnapshot/* --exclude=/www-data*/*"
Die Anfuehrungszeichen sind wichtig! Weitere Informationen zu der Syntax finden sich auf der man Page der jeweiligen Backuptools.
Folgende Verzeichnisse werden niemals gesichert:
Der Backupfad der im Aufruf angegeben wurde, /proc/* , /lost+found/* , /sys/* , /dev/* , /tmp/*, /boot/*, /run/* , /proc/* , /lost+found/* , /sys/* , /dev/* , /tmp/* , /boot/* , /run/*
Ausserdem werden alle gemounteten Verzeichnisse von externen Geräten, die nicht auf / gemounted sind, nicht gesichert. Es wird nur die Boot Partition /dev/mmcblk0p1 und die Root Partition /dev/mmcblk0p2 bzw das ausgelagerte Rootverzeichnis auf z.B. /dev/sda1 gesichert.
Hinweis für den partitionsorientierten Mode:
Wenn die Option -P benutzt wird werden in allen Partitionsbackups die o.g. Verzeichnisse ausgenommen.
rsync:
*/verzeichnis/* - Excluded verzeichnis auf allen Partitionen
mmcblk0p2/verzeichnis/* - Excluded verzeichnis auf Partition mmcblk0p2
tar:
verzeichnis/* - Excluded Verzeichnis auf allen Partitionen
|
Keiner |
DEFAULT_ EXCLUDE_ LIST |
-U |
Die lokale raspiBackup.sh Version wird durch die letzte aktuelle Version ersetzt sofern eine neue Version existiert Die vorherige Version wird als raspiBackup.sh.n.m gesichert wobei n und m die Versionsnumer von raspiBackup ist. Siehe Parameter -V um eine vorhergehende Version wiederherzustellen. Achtung: Vorher sollte man diese Seite lesen und sich über die Änderungen und Neuerungen informieren. |
Aus | |
--updateUUIDs | Verfuegbar ab Release 0.6.4.4: Beim Restore werden immer die UUIDs bzw PARTUUIDs genommen die das Original hat. Mit dieser Option werden neue UUIDs und neue PARTUUIDs generiert. | Aus |
DEFAULT_ UPDATE_UUIDS |
-v | Die verwendeten Backuptools tar und rsync zeigen detailierte Informationen an (Verbose mode). Die Option ist besonders nützliche bei initialen manuellen Backuptests um den Backupfortschritt verfolgen zu können. | Nein |
DEFAULT_ VERBOSE |
-V | Es wird eine Liste aller existierenden Vorgängerversionen angezeigt und man kann die Version auswählen, die wiederhergestellt werden soll. Die aktuelle Version wird gesichert und kann dann auch mit dieser Option später wiederhergestellt werden (Siehe auch -U Parameter) | Nein | |
--version |
Die Version von raspiBackup wird im folgenden Format ausgegeben: Version: 0.6.3.2 CommitSHA: 8fbcd1a CommitDate: 2018-02-19 CommitTime: 19:18:31# Das dient im Wesentlichen dazu programmatisch die Versionsinformationen von raspiBackup abzufragen. |
Aus | |
-y | Mit dieser Option wird das aktuelle Script auf alle Hosts kopiert, die in der Konfigurationsdatei definiert sind. Der Zugriff muss per authorized_keys ohne Kennwort möglich sein. Somit lässt sich raspiBackup schnell auf einer größeren Menge von Hosts nach einem Versionsupdate verteilen. | Nein |
DEFAULT_ DEPLOYMENT_ HOSTS |
-z | Backup verkleinern mit gzip bei dd oder tar Backup | Nein |
DEFAULT_ ZIP_ BACKUP |
Nur im Fehlerfalle wird eine eMailbenachrichtigung gesendet. Hinweis: Sollte raspiBackup wegen aussergewöhnlicher Umstände abstürzen kann es durchaus sein dass keine eMail gesendet wird. | Nein |
DEFAULT_ MAIL_ ON_ ERROR_ ONLY |
|
Backupoptionen, die beim rsync Backup genutzt werden. Benutzung auf eigene Gefahr ! |
--delete -aHAXx |
DEFAULT_ RSYNC_ BACKUP_ OPTIONS |
|
Backupoptionen, die beim tar Backup genutzt werden. Benutzung auf eigene Gefahr ! |
-cpi |
DEFAULT_ TAR_ BACKUP_ OPTIONS |
|
Backupoptionen, die beim rsync Backup zusätzlich genutzt werden. Benutzung auf eigene Gefahr ! |
Keine |
DEFAULT_ RSYNC_ BACKUP_ ADDITIONAL_ OPTIONS |
|
Backupoptionen, die beim tar Backup zusätzlich genutzt werden. Benutzung auf eigene Gefahr ! |
Keine |
DEFAULT_ TAR_ BACKUP_ ADDITIONAL_ OPTIONS |
|
Sich selten ändernde Bootparition Backups werden mit Hardlinks verknüpft um Backupspace zu sparen. Voraussetzung: Der Backupspace unterstützt Hardlinks (ext3/ext4 Filesystem). | Nein |
DEFAULT_ LINK_ BOOTPARTITIONFILES |
|
dd Backups sichern nur den von definierten Partitionen belegten Platz. Dadurch benötigt eine 32GB SD Karte, die nur eine 8GB Partition definiert hat, für den Backup nur 8GB und nicht 32GB. Dazu muss aber vermittels gparted oder resize2fs die root Partition entsprechend verkleinert werden, denn üblicherweise füllt die root Partition den gesamten Rest der SD Karte aus. Siehe dazu auch FAQ #16 |
Nein |
DEFAULT_ DD_ BACKUP_ SAVE_ USED_ PARTITIONS_ ONLY |
|
Diese Option wird benutzt um an eMails das Log anzuhängen. | -a |
DEFAULT_ APPEND_ LOG_ OPTION |
|
Die eMailAdresse des Versenders kann angegeben werden. | root@$(hostname) |
DEFAULT_ SENDER_ |
|
Backup Restore Test Reminder Intervall (Einheit: Monate)
|
6 |
DEFAULT_ RESTORE_ REMINDER_ INTERVAL |
|
Anzahl der Erinnerungen einen Backup Restore Test durchzuführen. | 3 |
DEFAULT_ RESTORE_ REMINDER_ REPEAT |
|
Ab Version 0.6.4.3: Die hier definierten Befehle werden vor bzw nach dem Backup vor bzw nach dem Stoppen von Systemservices (Option -a und -o) ausgeführt. | nein |
DEFAULT_ BEFORE_ STOPSERVICES DEFAULT_ AFTER_ STARTSERVICES |
Hinweis: Optionen in der Konfigdatei, die ja oder nein als Parameter benötigen müssen 0 für nein und 1 für ja sein.
Thematische Sortierung
- Optionen, die das Backup beschreiben
- -k : Anzahl der Backups die vorgehalten werden sollen
- -t : Typ des Backups (dd, tar, rsync)
- -P : Partitionsorientierter Backupmodus
- -z: Kompression des Backups bei dd oder tar
- -u: Ermöglicht weitere Verzeichnisse aus dem Backuprozess auszuschliessen
- -T: Angabe der Partitionen die beim partitionsorientierten Backup gesichert werden sollen
- Optionen, die die Meldungen und das Log betreffen
- -m: Details der Meldungen
- -L: Platz wo das Laufzeitlog gespeichert wird
- -l: Einschalten des detailierten Loglevels
- -G: Sprache der Meldungen (Deutsch oder English)
- -A: Das Laufzeitlog wird bei der eMail Benachrichtigung mitgeschickt
- -v: Alle Meldungen des verwendeten Backuptools werden protokolliert
- Optionen, die die eMail Benachrichtigung steuern
- Optionen, die den Update, Restore und lokale Verteilung von raspiBackup steuern
- Optionen, die Services vor dem Backup starten und stoppen sowie Erweiterungen
- Weitere Optionen
Erweiterungsmöglichkeiten von raspiBackup
Es bestehen folgende Möglichkeiten die Funktionalität des Backupscripts durch eigenen Code zu erweitern.
1) Benutzung eines selbstgeschriebenen Scriptes welches das Backupscript aufruft und Aktionen vor und nach dem Aufruf vornimmtDazu gibt es das folgende Beispielscript welches individuelle Anpassungsmöglichkeiten bietet und muss nur geringfügig an den gekennzeichneten Stellen den lokalen Gegebenheiten angepasst werden. Es enthält schon Code, der automatisch Geräte mounted und unmounted. Das Script kann hier runtergeladen werden.
Voraussetzung ist dass der Mountpoint in der /etc/fstab bereits definiert wurde. Anschliessend muss das Script noch an ein paar Stellen den jeweiligen lokalen Gegebenheiten mit einem Editor angepasst werden und dann aktiviert werden mit
sudo mv raspiBackupWrapper.sh /usr/local/bin
sudo chmod +x /usr/local/bin/raspiBackupWrapper.sh
und dann ist raspiBackupWrapper.sh anstelle von raspiBackup.sh in der Crontab aufzurufen. Der Quellcode vom Wrapperscript findet sich auch auf github und kann durch einen Pull Request erweitert werden.
2) Benutzung von Plugins in die eigene Scripts eingehängt werden
Vor und nach dem eigentlichen Backup können Scripte asl Plugins eingehängt werden. Details dazu finden sich in der Detailbeschreibung zu Plugins
Restore
Ein Restore benötigt ein Linuxsystem. Windowsbenutzer oder Macbenutzer können dafür einfach die Raspberry selbst benutzen. Dafür muss nur eine SD Karte mit einem Raspbian gestartet werden, ein SD Kartenleser mit der neuen SD Karte die das Restore erhalten soll angeschlossen werden, der Backup entweder per USB oder Netzwerk gemounted werden und raspiBackup zum Restore gestartet werden.
Das dd Backup kann man auch unter Windows zurückspielen. Weiterhin kann das Backupscript kann auch genutzt werden, um SD Karten zu kopieren: Es wird ein Backup erstellt und dann auf einer anderen SD Karte restored.
Die genaue Aufrufsyntax für den Restore ist hier zu finden.
Backupmethoden
Vollbackup | Backupzeit | Backupgröße | Datenkompression | CPU belastet | Karte belastet | Selektiver Restore möglich |
Dateisystem | |
dd | ja | lang | gross | nein | mittel | hoch | nein | alle, fat32 nur bis 4GB |
ddz | ja | lang | kleiner | ja | ja | hoch | nein | alle, fat32 nur bis 4GB |
tar | ja | mittel | mittel | nein | nein | mittel | ja | alle, fat32 nur bis 4GB |
tgz | ja | mittel | mittel | ja | ja | mittel | ja | alle, fat32 nur bis 4GB |
rsync | ja |
kurz mit Hardlinks mittel ohne Hardlinks |
klein mit Hardlinks mittel ohne Hardlinks |
nein | nein | kaum | ja | ext3/ext4 |

Vergleich partitionsorientierter Backup und normaler Backup
Es existieren zwei Backupmodi:
1) Normaler Backup
In diesem Modus werden die ersten zwei Partitionen (die Bootpartition und die Rootpartition) der SD Karte gesichert. Ausserdem wird beim tar und rsync Backup auch eine externe Rootpartition, d.h. eine auf einen USB Stick oder USB Platte ausgelagerte Rootpartition, gesichert. Mit dem dd Backup kann auch die gesamte SD Karte gesichert werden. Dieses kann man benutzen um z.B. NOOBS Images zu sichern. Falls die Ziel SD Karte beim Restore größer ist als die Quell SD Karte wird automatisch die zweite Partition entsprechend erweitert.
2) Partitionsorientierter Backup
In diesem Modus wird jede auf der SD Karte befindliche oder eine bestimmte Anzahl von Partitionen als tar oder rsync gesichert. Dabei ist die Anzahl der Partitionen beliebig und ermöglich damit auch die Sicherung von NOOBS Partitionen. Falls die Ziel SD Karte beim Restore größer ist als die Quell SD Karte wird der zusätzliche Platz nicht benutzt. Hinweis: Eine externe Rootpartition wird nicht unterstuetzt.
Backupverzeichnisstruktur (Normaler Backup)
Jeder Backuplauf erstellt im Backupverzeichnis ein Unterverzeichnis welches folgendes Format hat: <hostname>. Darunter wird ein weiteres Verzeichnis <hostname>-<backuptyp>-<backupdatum> erstellt. Wenn man die Option -M benutzt sieht der Unterordner wie folgt aus: <hostname>-<-M parameter> und darunter wird dann das weitere Verzeichnis <hostname>-<backuptyp>-<backupdatum> erstellt.
Beispiele: Die Raspberry hat den Hostnamen raspberrypi und es wird ein dd Backup am 15.04.2016 um 22:29:00 erstellt. Dann wird ein Verzeichnis raspberrypi erstellt sowie ein Unterverzeichnis raspberrypi-dd-backup-20160415-222900. Gibt man als Parameter für die Option -M "Hello world" mit wird das Verzeichnis raspberrypi-Hello_world sowie das Unterverzeichnis raspberrypi-dd-backup-20160415-222900 erstellt.
Anbei die Verzeichnisstruktur meines Backupservers, der in diesem Falle auch eine Raspberry Pi ist. Verschiedene Backuptypen können pro Pi kombiniert werden. Jedes Backup wird in einem neuen Unterverzeichnis abgelegt.
Pro Raspberry System werden drei bzw fünf weitere Dateien immer zum eigentlichen Backup erstellt und sind notwendig für den Restore wenn es kein dd Backup ist:
- .img - Bootpartition der SD Karte
- .mbr - Master Boot Record der SD Karte
- .sfdisk - Partitionslayout der SD Karte - Ausgabe des sfdisk Befehls
- .blkid - (Partitionsorientierter Modus) - Ausgabe des blkid Befehls
- .parted - (Partitionsorientierter Modus) - Ausgabe des parted Befehls
root@jessie:/mnt/backup/raspberrypi# tree -L 2
.
├── raspberrypi-dd-backup-20160415-222900
│ └── raspberrypi-dd-backup-20160415-222900.img
├── raspberrypi-rsync-backup-20160416-094106
│ ├── backup
│ ├── bin
│ ├── boot
│ ├── boot.bak
│ ├── dev
│ ├── etc
│ ├── home
│ ├── lib
│ ├── lost+found
│ ├── media
│ ├── mnt
│ ├── opt
│ ├── proc
│ ├── raspberrypi-backup.img
│ ├── raspberrypi-backup.mbr
│ ├── raspberrypi-backup.sfdisk
│ ├── remote
│ ├── root
│ ├── run
│ ├── sbin
│ ├── selinux
│ ├── srv
│ ├── sys
│ ├── tmp
│ ├── usr
│ └── var
├── raspberrypi-tar-backup-20160415-204305
├── raspberrypi-backup.img
├── raspberrypi-backup.mbr
├── raspberrypi-backup.sfdisk
└── raspberrypi-tar-backup-20160415-204305.tar
Backupverzeichnisstruktur (Partitionsorientierter Backup)
root@jessie:/mnt/backup/raspberrypi# tree -L 2
.
├── raspberrypi-dd-backup-20160415-222923
│ └── raspberrypi-dd-backup-20160415-222923.img
├── raspberrypi-rsync-backup-20160416-104548
│ ├── mmcblk0p1
│ ├── mmcblk0p2
│ ├── raspberrypi-backup.blkid
│ ├── raspberrypi-backup.fdisk
│ ├── raspberrypi-backup.mbr
│ ├── raspberrypi-backup.parted
│ └── raspberrypi-backup.sfdisk
└── raspberrypi-tar-backup-20160416-114748
├── mmcblk0p1.tar
├── mmcblk0p2.tar
├── raspberrypi-backup.blkid
├── raspberrypi-backup.fdisk
├── raspberrypi-backup.mbr
├── raspberrypi-backup.parted
└── raspberrypi-backup.sfdisk
Haftungsausschluss
Das Backup- und Restorescript raspiBackup wurde für den persönlichen Gebrauch erstellt und, da es sich als sehr nützlich erwies, der Allgemeinheit zur Verfügung gestellt. Es wird im Rahmen des Möglichen die korrekte Funktionalität getestet aber es kann nicht ausgeschlossen werden, dass durch Fehler in raspiBackup die erwartete Funktionalität nicht gewährleistet ist. Jeder, der raspiBackup benutzt tut das auf sein eigenes Risiko. Der Ersteller von raspiBackup ist in keiner Weise haftbar für irgendwelche Fehlfunktionen des Scripts.
Updatestrategie
Vor Zeit zu Zeit wird eine neue Version von raspiBackup zum Download bereitgestellt die neue Funktionen, Erweiterungen und kleine Fixes enthält. Auf dieses wird von raspiBackup beim Aufruf und in der gesendeten eMail hingewiesen und man kann dann mit dem Parameter -U die neueste Version runterladen und aktivieren. Die aktuelle Version wird dabei gesichert und mit dem Parameter -V kann jederzeit wieder die vorherige Version aktiviert werden. Vor dem Update sollte man nachlesen welche Änderungen und Neuerungen in der neuen Version enthalten sind. Diese Information dazu findet sich in der Versionshistorie. Sollte einmal ein gravierender Fehler entdeckt werden, wird eine neue Version sofort bereitgestellt.
Jede neue Version wird vor der Veröffentlichung regression getestet. Details zum Regressiontest finden sich hier.
Trinkgeld
Immer wieder wird gefragt ob und wie man den Entwicklungs- und Wartungsaufwand sowie Support für raspiBackup honorieren kann. Die auf der Kontaktseite genannte eMail ist PayPal bekannt und ein jeder kann mit einem PayPal Konto an diese eMail ein Trinkgeld geben. Danach wirst Du in diese Liste aufgenommen. Solltest Du das nicht wollen das einfach kurz mitteilen.
Ein raspiBackup Nutzer wollte gerne in Bitcoins ein Trinkgeld spenden. Deshalb habe ich ein Wallet angelegt und die Addresse ist 13aXub22Sy3AvTKkj14yvnUdMQYJQFdbRo
Es gab auch vereinzelt raspiBackup Nutzer die wollten weder Paypal noch Bitcoins nutzen und haben mir dann per Briefpost ihr Trinkgeld zukommen lassen. Die Adresse findet sich auf der Impressumsseite.
Weitere Seiten zu raspiBackup
Versionshistorie von raspiBackup.sh
Sicherung des Backups von raspiBackup.sh auf einer Synology
Alle Artikel zu raspiBackup auf dieser Webseite
Hilfreiche Links zum Thema Backup
sysmatt: Backup, Restore, Customize and Clone your Raspberry Pi SD Cards
How To Take Hot Backup Of Raspberry Pi Without Removing The SD Card
How to extend a NOOBS partition
Weitere Backuptools fuer die Raspberry
rpi-clone: Sicherung einer Raspberry per rsync (Englisch)
piclone: Klonen einer SD Karte per cp. shell Script und UI im Raspbian enthalten
Automating backups on a Raspberry Pi NAS: Erstellen und Vorhalten von 7 täglichen, 4 wöchentlichen, 12 monatlichen und 5 jaehrlichen Backups. Diese Funktion ist per Helperscript mit raspiBackup verfuegbar. (Englisch)
borg: Sehr mächtiges Backuptool (Englisch)
Hinweis
Spam Kommentare werden gelöscht und nicht veröffentlicht. Die Überprüfung wird manuell vorgenommen und deshalb dauert es i.d.R. zwischen ein paar Stunden bis zu einem Tag bis ein Kommentar veröffentlicht wird.