Click here to open this page in English 

 

raspiBackup ermöglicht Backups von Raspberries manuell oder automatisch in regelmäßigen Abständen von einem laufenden System zu erstellen. 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 Hardlinks zur Verfügung. Die erstellten Backups können mit raspiBackup auf beliebigen SD Karten wiederhergestellt werden. Eine ausgelagerte Rootpartition wird mitgesichert und NOOBS Images werden unterstützt.
 

 

 

Hinweis

  • Unter dem folgenden Link FB f Logo blue 29  werden aktuelle Aktivitäten und Randinformationen zu raspiBackup auf Facebook publiziert. Es ist dafür keine Facebook Anmeldung oder Registrierung notwendig.
  • Neuigkeiten zu raspiBackup werden auf Twitter Twitter f Logo blue 29 #raspiBackup publiziert.
  • Für Fragen Question 29 oder Problemmeldungen zu raspiBackup steht die Kommentarfunktion am Ende der Seite zur Verfügung.

 

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

  1. Zusammenfassung
  2. Funktionsübersicht
  3. Übersichtsbild
  4. Installation
  5. Aufrufparameter (alphabetisch sortiert)
  6. Aufrufparameter (thematisch sortiert)
  7. Erweiterungsmöglichkeiten
  8. Restore
  9. Fehlermeldungen und -suche
  10. Backupmethoden
  11. Vergleich partitionsorientierter Backup und normaler Backup
  12. Backupverzeichnisstruktur
  13. Haftungsausschluss
  14. Updatestrategie
  15. Weitere Seiten zu raspiBackup
  16. Häufige Fragen (FAQ) 
  17. Versionshistorie
  18. Benutzung von Synology
  19. Hilfreiche Links zum Thema Backup
  20. git Änderungslog
  21. Danksagungen

 

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. 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.

Für Freunde von Facebook exisitiert eine Facebookgruppe zu raspiBackup wo aktuelle Neuigkeiten und Randinformationen zu raspiBackup publiziert werden.
 

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, ...)
  • 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 benötigt eine ext3/ext4 Partition für Hardlinks
  • dd und tar kann gezippt werden um die Sicherung noch zu verkleinern (-z Option)
  • 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 und ssmtp (-s Option)
  • Nicht unterstützte eMailClients können durch ein eMailPlugin eingebunden werden
  • rsync benutzt Hardlinks um die Backupgröße zu reduzieren
  • 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

 

Übersichtsbild

raspiBackupOverview

Installation

Die aktuelle Version von raspiBackup ist 0.6.3.1 Eine schon existierende Konfigurationsdatei von raspiBackup (/usr/local/etc/raspiBackup.conf) sowie eine schon existierende Version vom Script raspiBackup (/usr/local/bin/raspiBackup.sh) werden automatisch in ihren Verzeichnissen vom Installationsscript gesichert. Das Installationsscript raspiBackupInstall.sh wird ebenso in /usr/local/bin kopiert.

Voraussetzung: Login als Benutzer pi ins Homeverzeichnis

  1. Zum Installieren können folgende alternativen Befehle auf der Raspberry ausgeführt werden. Ein Upgrade von Versionen auf eine neuere Version ist auch damit möglich denn das alte Script sowie die Config Datei werden vorher gesichert. Allerdings ist ein Upgrade mit der Option -U schneller vorgenommen. Nach der Installation sollte unbedingt die FAQ Seite gelesen werden.
    1. raspiBackup.sh wird in /usr/local/bin auf der Raspberry installiert und ausführbar gemacht. Danach werden die wichtigsten Optionen abgefragt und dann die Konfigurationsdatei /usr/local/etc/raspiBackup.conf entsprechend konfiguriert. Anschliessend muss nur noch raspiBackup mit dem Backuppfad aufgerufen werden um ein Backup zu erstellen.
      curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackupInstall.sh && sudo bash raspiBackupInstall.sh 
    2. raspiBackup.sh wird in /usr/local/bin auf der Raspberry installiert und ausführbar gemacht. Ausserdem wird eine Standardkonfigurationsdatei auf /usr/local/etc/raspiBackup.conf installiert, wobei die Kommentare in der konfigurierten Systemsprache der Raspberry sind. Die Konfigurationsdatei muss manuell angepasst werden.
      curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackupInstall.sh && sudo bash raspiBackupInstall.sh -c
    3. raspiBackup.sh wird in /usr/local/bin auf der Raspberry installiert und ausführbar gemacht. Ausserdem wird eine Standardkonfigurationsdatei auf /usr/local/etc/raspiBackup.conf mit deutschen Kommentaren installiert . Die Konfigurationsdatei muss manuell angepasst werden.
      curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackupInstall.sh && sudo bash raspiBackupInstall.sh -c -l DE
  2. raspiBackup kann man auch manuell downloaden mit diesem Link in einem Browser oder auch direkt mit den folgenden Befehlen. raspiBackup muss man dann manuell in /usr/local/bin und die Konfigurationsdatei nach /usr/local/etc kopieren und anpassen.
    curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackup.sh
    curl -s -L https://www.linux-tips-and-tricks.de/downloads/raspibackup-de-conf/download > raspiBackup.conf
  3. Wenn die folgende Zeile
    00 22  * * 0 /usr/local/bin/raspiBackup.sh -p /backup -t tar -k 4 -e Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!  
    mit dem Befehl
    sudo crontab -e
    in die crontab eingefügt wird wird jeden Sonntag um 22 Uhr automatisch ein tar Backup in dem Verzeichnis /backup erzeugt und eine StatusEmail an Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! gesendet.

    Hinweis: Wer direkt die /etc/crontab mit einem Editor ändert muss die folgende Zeile einfügen:
    00 22  * * 0 root /usr/local/bin/raspiBackup.sh  -t tar -k 4 -e Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! /backup
  4. Anschließend sollte ein Restore auf eine weitere SD Karte vorgenommen werden um sich mit der Art, wie das Backup zu restoren ist, vertraut zu machen und das Backup zu testen. Es ist nichts ärgerlicher, wenn man zu dem Zeitpunkt, wenn man das Backup benötigt, feststellt, das das Backup nicht alles enthält oder sogar nicht brauchbar ist.

Die Deinstallation von raspiBackup sowie aller Konfigurationsdateien und dem Installationsscript startet man mit

sudo raspiBackupInstall.sh -u

Weitere Details zu den verschiedenen Funktionen des Installationsskriptes erfährt man durch den Aufruf der Hilfefunktion

raspiBackupInstall.sh -h

Achtung

Ein Backup nützt nichts wenn in dem Moment, wo man es einspielen möchte, feststellt, das das Backup nicht zu gebrauchen ist. Desshalb sollte man nach dem ersten erfolgreichen Backup auch sofort den Restore testen und immer wieder von Zeit zu Zeit den ganzen Restoreprozess durchexerzieren und damit testen ob die erstellten Backups OK sind und sich ein System damit funktionsfähig restaurieren läßt.   

 

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.

 

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:

-a "service nfs-kernel-server start && service samba"

Soll wirklich kein Service gestartet werden muss der Doppelpunkt ":" als Argument mitgegeben werden.

Siehe dazu auch FAQ #1 und FAQ #18

Keiner

 DEFAULT_

STARTSERVICES

-A
Das Laufzeitlog wird in der email mitgeschickt Nein

DEFAULT_

APPEND_

LOG

-b Blocksize die beim dd Backup benutzt wird 1MB

DEFAULT_

DD_

BLOCKSIZE

 -D  Weitere Aufrufoptionen für das dd Backup (z.B. "conv=notrunc,noerror,sync")  Keiner

DEFAULT_

DD_

PARMS

 -e email Addresse, die eine Status-email des backups zugesendet bekommt bzw im Fehlerfalle das Fehlerprotokoll   Keiner

DEFAULT_

EMAIL

-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

DEFAULT_

EMAIL_

PARMS

-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 vorzuhalten sind  3

DEFAULT_

KEEPBACKUPS

 -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

-L

Ort wo der Laufzeitlog angelegt wird

- syslog -> /var/log/syslog

- varlog -> /var/log/raspiBackup/<hostname>.log

- backup -> <backupPath>

- current -> ./raspiBackup.log

Im Fehlerfalle findet sich die Logdatei für den Parameter backup im Homeverzeichnis des aufrufenden Benutzers. 

syslog für Backup

 currrent für Restore (nicht änderbar)

 DEFAULT_

LOG_

OUTPUT

-m

Meldungsdetails 

- 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

DEFAULT_

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

DEFAULT_

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:

-o "service samba stop && service nfs-kernel-server stop"

Soll wirklich kein Service gestoppt werden muss der Doppelpunkt ":" als Argument mitgegeben werden.

Siehe dazu auch FAQ #1 und FAQ #18

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 Parition mitgesichert werden.

nein

DEFAULT_

PARTITIONBASED_

BACKUP 

-s

email Program welches benutzt wird {mail|sendEmail|ssmtp}. 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

mail

 DEFAULT_

MAILPROGRAM

-t

Typ des Backups, der entweder dd, tar oder rsync sein kann. rsync benötigt eine ext3/ext4 Partition um Hardlinks erstellen zu können. 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

-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.

*

DEFAULT_

PARTITIONS_

TO_

BACKUP

-u
Erweiterung der Excludeliste beim Backup um bestimmte Verzeichnisse beim Backup zu ignorieren.
 
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*/*". 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  
-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  
-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 !

-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

 

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.

Die Optionen für den Restore eines Backups sind auf dieser Seite beschrieben.
 

 

Thematische Sortierung

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 vornimmt
 

Dazu 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.

  

Fehlermeldungen und -suche

 
Die Fehlermeldungen sind i.d.Regel selbsterklärend. Informationsmeldungen haben eine Nummer, die mit I endet. Warnungsmeldungen enden mit W und Fehlermeldungen enden mit E.

Es kann aber vorkommen dass raspiBackup.sh nicht korrekt läuft und Fehlernachrichten schreibt. Das liegt zu 90% Prozent an fehlerhaften Konfigurationen oder Parametrisierung. Die Fehlermeldungen sollten auf die konkrete Ursache hinweisen. Falls nicht helfen folgende Massnahmen den Fehler genauer zu lokalisieren:
 
1) Start von raspiBackup in der Befehlszeile und nicht in der crontab um Fehlkonfigurationen in der Crontab zu eliminieren
2) Es wird eine Logdatei bei jedem Lauf erzeugt. Durch die zusätzliche Benutzung des Parameters -l debug (kleines L) beim Aufruf von raspiBackup.sh werden eine Menge detailierte Informationen von raspiBackup erzeugt und man kann man in der Logdatei nach Fehlermeldungen und -ursachen suchen die helfen den Fehler zu lokalisieren. (Je nach Parameter -L befindet sich die Logdatei an anderer Stelle. Siehe die Details dazu oben bei der Parameterbeschreibung für -L. Weiterhin kann auch der Parameter -v weiterhelfen wenn Fehler in den Linux Backuptools auftreten.
3) Falls die Informationen in der Logdatei nicht helfen die Fehlerursache selbst zu finden sollte man den Fehler auf dieser Seite in einem Kommentar schildern. In der Regel erfolgt dann die Bitte das erstellte ausführliche Logfile zwecks Analyse per eMail zuzuschicken.
 

Backupmethoden

Es gibt verschiedene Backupmethoden und eine jede hat ihre Vor- und Nachteile. Anbei eine Auflistung eben dieser für die verschiedenen unterstützten Backuptypen. Es können auch unterschiedliche Backupmethoden kombiniert werden. Sämtliche Backupmethoden können mit raspiBackup vollständig wiederhergestellt werden.
 
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 wenigstens so gross sein muss wie die Original SD Karte. Es wird keine Parition irgendwie in der Größe angepasst. Diese Methode belastet die SD Karte sehr stark. Allerdings kann ein dd Backup unter Windows mit disk32imager wiederhergestellt werden.
 
Ein ddz Backup sichert die gesamte SD Karte, wie ein dd Backup. Diese Methode belastet die CPU stark da die Datenmenge reduziert wird. (Es ist ein dd Backup mit eingeschaltetem Zippen mit -z). Ein Restore mit dem win32diskimager ist nicht möglich.
 
Ein tar Backup sichert die gesamte SD Karte, wobei allerdings das Backup nicht so gross 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.
 
Ein tgz Backup sichert die gesamte SD Karte, wie ein tar Backup. Diese Methode belastet die CPU stark da die Datenmenge reduziert wird. (Es ist ein tar Backup mit eingeschaltetem Zippen mit -z)
 
Ein rsync Backup sichert außer beim ersten Mal nur die Daten, die sich zum letzten Backup geändert haben. Durch die Hardlinks des ext3/ext4 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 wenn bereits schon einmal ein initiales Backup erstellt wurde.
 
  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 mittel 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.

 

Backupverzeichnisstruktur (Normaler Backup)

Jeder Backplauf 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:

  1. .img - Bootpartition der SD Karte
  2. .mbr - Master Boot Record der SD Karte
  3. .sfdisk - Partitionslayout der SD Karte - Ausgabe des sfdisk Befehls
  4. .blkid - (Partitionsorientierter Modus) - Ausgabe des blkid Befehls
  5. .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.

 

Weitere Seiten zu raspiBackup

Häufig gestellte Fragen (FAQ)

Versionshistorie von raspiBackup.sh

Sicherung des Backups von raspiBackup.sh auf einer Synology

Verbesserungs- und Änderungsvorschläge

 

Hilfreiche Links zum Thema Backup

Shrinking images on Linux

rpi-clone: A shell script to clone a running Raspberry Pi SD card to a USB mounted SD card

sysmatt: Backup, Restore, Customize and Clone your Raspberry Pi SD Cards

Automatic RPi Image Downsizer

How to extend a NOOBS partition

Kommentar schreiben
Hinweis:
Die eMail ist versteckt und nicht öffentlich sichtbar. Sie wird benutzt um über neue Kommentare zu informieren.