Häufige Fragen zu raspiBackup. Jeder neue Benutzer von raspiBackup sollte sich einmal alle Fragen und Antworten durchlesen.

 

0) Wie entstand raspiBackup?

Bei mir laufen zu Hause drei Raspis. Zwei davon 7/24 - also rund um die Uhr. Ein jeder Server sollte regelmäßig gesichert werden denn es können immer mal unvorhergesehene Umstände eintreten, die eine Wiederherstellung eines vorherigen Standes erfordern. Speziell die SD Karte der Raspberry neigt dazu immer mal wieder auszufallen. Um dafür gewappnet zu sein habe ich mir ein kleines Script geschrieben, welches zuerst ein dd Backup, dann später, da ein dd Backup ja immer die gesamte SD Karte sichert obwohl nur Bruchteile davon benutzt werden, ein tar Backup automatisch erstellte. Zum Schluss wurde dann ein rsync Backup implementiert. Nachdem ich dann mehrere Male eine Wiederherstellung vornehmen musste und alles gut klappte dachte ich mir dass es vielleicht auch anderen Raspberryfreunden hilfreich sein könnte und publizierte raspiBackup.

1) Ist ein Backup eines laufenden Systems zuverlässig? Sollte nicht das gesamte System vor dem Backup gestoppt werden ?

Die sicherste Methode ist natürlich das System vollständig zu stoppen. Das kann man aber leider nicht regelmäßig und automatisch von cron gesteuert vornehmen. Wenn man alle aktiven Services wie mysql, samba, nfs, seafile, Owncloud, Webserver und alle anderen aktiven Services immer vor dem Backup stoppt um keine Dateninkonsistenzen zu erzeugen kann das Backup zum Wiederherstellen der Raspi genutzt werden. Stoppt man die Servies nicht besteht eine hohe Wahrscheinlichkeit dass das Backup inkonsistent werden wird. Dazu gibt es die Parameter -a und -o um die entsprechenden Stop- und Startbefehle vor bzw nach dem Backup auszuführen. Siehe auch FAQ 18 dazu. Alternativ kann ein Beispielwrapperscript erweitert werden (Siehe hier).

2) Wie kann ich ein Backup wiederherstellen?

Mit raspiBackup kann jedes Backup wieder zurückgespielt werden (Siehe hier die Details). Es wird aber ein Linux benötigt. Als Windowsbenutzer kann man win32diskimager benutzen um dd Backups wiederherzustellen. Für andere Backuptypen wie tar oder rsync ist ein Linux notwendig.

Allerdings kann man dazu die Raspberry benutzen: Man bespielt eine neue SD Karte mit raspbian und kopiert darauf raspiBackup. Dann schließt man einen externen SD Kartenleser, in die man eine SD Karte, die den Restore erhalten soll, einschiebt - sowie das Medium mit dem Backup an die Raspberry an. Danach ruft man raspiBackup auf und läßt ein gewünschtes Backup auf die externe SD Karte zurückschreiben. Anschliessend fährt man das System runter, legt die SD Karte mit dem zurückgespielten Backup ein und startet die Raspberry wieder.

3) Was kann raspiBackup alles sichern und wiederherstellen?

Im normalen Modus kann raspiBackup zwei Partitionen sichern: Die Boot und die Rootpartition die auf der SD Karte liegen. Wenn die Rootpartition auf ein externes Medium verlagert wurde wird auch die externe Rootpartition gesichert. (raspiSD2USB.py hilft bei der Verlagerung). Im partitionsorientierten Modus werden beliebig viele Partitionen der SD Karte gesichert. Weitere externe Partitionen werden aber nicht gesichert. Dieser Modus ist sinnvoll z.B. für NOOBS Installationen.

4) Welche Linux Sicherungsmethoden stehen zur Verfügung?

Es steht der dd Backup sowie der tar und rsync Backup zur Verfügung. dd und tar Backups können noch mit zip komprimiert werden. Auf dieser Seite können die Vor- und Nachteile der jeweiligen Backupmethoden nachgelesen werden.

5) Kann man die Sicherung auch ohne raspiBackup wiederherstellen?

Das ist eine Grundvoraussetzung für raspiBackup gewesen: Es muss möglich sein das Backup mit entprechenden Linuxkenntnissen zu Fuss restoren zu können.

Die Sicherung legt Dateien an, die die lesbaren Ausgaben von den Linux Befehlen sfdisk, blkid und fdisk von der SD Karte enhält. Damit läßt sich zuerst die Partitionsstruktur des Backups mit den entsprechenden Linuxtools wiederherstellen. Danach kann man die Partitionsbackups mit den entsprechenden Linuxtools wieder auf die Partitionen zurückspielen.

6) Kann man die Sicherungen mit raspiBackup auch auf kleiner und größere SD Karten wiederherstellen?

Auf größere Karten funktioniert das ohne Probleme. Allerdings benutzt das Image genau den Platz, den es im Original benutzt hat. Der restliche Speicherplatz wird nicht genutzt und muss mit Linux Repartitionierungstools nach der Wiederherstellung angepasst werden.

Ab der Version 0.6.1.3 funktioniert das sowohl für kleinere als auch größere SD Karten ohne Probleme sofern tar oder rsync Backup und der normale Backupmodus benutzt wird. Es wird automatisch die Größe der root Partition entsprechend angepasst, d.h. entsprechend verkleinert oder vergrößert. Bei einer Vergrößerung wird die gesamte SD Karte benutzt. Wird von der Backup SD Karte mehr Platz benutzt als die Restore SD Karte hat gibt es natürlich Fehler beim Restore. Beispiel: Backup SD Karte ist 32GB gross und 24GB werden benutzt. Die Restore SD Karte ist nur 16GB gross.

Mit der Option -0 (Null) wird keine Partitionierung der neuen SD Karte vorgenommen sondern die existierende Partitionierung der SD Karte genutzt. Man hat damit vollständige Kontrolle über die Größe der Wiederhergestellten Partitionen. D.h. man kann dadurch vor dem Restore genau festlegen, wie gross die Partitionen auf der neuen SD Karte sein sollen und somit auch auf kleiner SD Karten restoren. Das geht auch für partitionsorientierte Backups.

7) Wie kann ich die Partitionierung der Ziel SD Karte beeinflussen?

Es gibt zwei Optionen die das Partitionierungsverhalten von raspiBackup beeinflussen: Option -1 (eins) zwingt raspiBackup die Partitionierung der Backup SD Karte auf die Ziel SD Karte zu erstellen auch wenn die Partitionen kleiner oder größer als die Ziel SD Karte sind. Mit der Option -0 (Null) nimmt raspiBackup keine Paritionierung vor und verwendet die existiernde Partition der Ziel SD Karte. Somit kann man vor dem Restore die Partitionen anlegen und formatieren wie man sie haben möchte und diese wird dann von raspiBackup benutzt.

8) Auf welchen Medien kann man mit raspiBackup die Backups ablegen?

Generell auf jedem Device welches unter Linux gemounted werden kann

  • Externer USB Stick
  • Externe USB Platte
  • Synology
  • cifs/samba Netzwerklaufwerk
  • nfs Netzwerklaufwerk
  • sshfs Netzwerklaufwerk
  • webdav Netzwerklaufwerk
  • ftpfs Netzwerklaufwerk

9) Die Funktion von raspiBackup reicht nicht aus und es muss noch zusätzlich etwas vor oder nach dem Backup getan werden

Da gibt es verschiedene Möglichkeiten:

a) Ein Wrapperscript (Siehe hier) wird benutzt und nimmt vor und nach dem Backuplauf weitere Aktionen vor wie z.B. weitere Dinge zu sichern.

b) Beliebige Erweiterungspunkte (Extensions) können vor und nach dem Backup von raspiBackup aufgerufen werden. Zwei Beispielerweiterungen (Siehe hier) melden zusätzlich die CPU Temperatur vor und nach dem Backuplauf sowie den belegten Hauptspeicher. Eine eMailExtension erlaubt es beliebige andere eMailClients anzusteuern.

10) Welche eMailClients werden von raspiBackup unterstützt?

raspiBackup unterstützt mailx, ssmtp und sendEmail. Andere eMailClients können über ein eMail Erweiterung (Extension) angesprochen werden (Details siehe hier).

11) Mein eMailClient wird leider nicht von raspiBackup unterstützt. Wie kann ich trotzdem eMails erhalten?

raspiBackup kann eine eMailErweiterung (extension plugpoint) zum Senden der eMail benutzen. Dazu muss ein kleines Script geschrieben werden, welches die eMailParameter entsprechende dem verwendeteten eMailClient aufbereitet und den eMailClient mit der korrekten Syntax aufruft. Eine Beispielerweiterung für mailx ist bei den Erweiterungsbeispielen enthalten.

12) Ich habe eine Frage zu raspiBackup. Wie bekomme ich eine Antwort?

Am Ende jeder Webseite können Kommentare erstellt werden. Diese sind ideal um Fragen zu stellen. Um Spam zu vermeiden werden die Kommentare manuell kontrolliert und deshalb dauert es i.d.R. einen Tag bis der Kommentar veröffentlicht und beantwortet wird. Die eMailAdresse, die man dort optional angeben kann, wird nicht veröffentlicht. Sie ist notwendig wenn man über weitere Kommentare informiert werden will und sie wird auch im Bedarfsfalle genutzt um offline in Kontakt zu treten.

13) Ich habe einen Fehler in raspiBackup gefunden. Wo kann ich den Fehler melden und wann bekomme ich einen Fix dafür?

Wie in jeder Software kann es vorkommen, dass auch raspiBackup Fehler hat. In diesem Falle sollte der Fehler in Deutsch auf https://github.com/framps/raspiBackup/issues detailiert beschrieben werden. Ein Log von raspiBackup welches man mit den zusätzlichen Optionen

-l debug -L current

erstellt ist immer notwendig um weitere Problemanalysen vornehmen zu können.

Wer keinen github Account hat kann sich dort kostenlos anmelden. Wer das nicht machen will oder Probleme mit dem github hat kann natürlich auch einen Kommentar hinterlassen.

14) Bekomme ich irgendwie automatisch mit dass es eine neue Version von raspiBackup gibt?

raspiBackup prüft bei jedem Aufruf ob es eine neuere Version gibt. Wenn ja wird eine entsprechende Meldung ausgegeben und die Benachrichtigungsemail weist im Titel mit einem Smiley ;-) darauf hin. Dann kann man auf dieser Seite nachlesen was die neue Version bringt und dann mit dem Parameter -U einen Versionsupdate vornehmen lassen.

15) Wie kann ich auf eine vorhergehende raspiBackup Version zurückgehen wenn ich nach einem Upgrade bemerke, dass die neue Version nicht so funktioniert wie ich es erwarte?

raspiBackup erstelt jedes mal wenn mit der Option -U eine neue Version aktiviert wird eine Sicherungskopie. Mit der Option -V kann man jederzeit auf eine vorhergehende Version zurückgehen. Es wird eine Liste von alle gesicherten raspiBackup Versionen angezeigt und man kann die Version, die zurückgespielt werden soll daraus auswählen.

16) Ich habe eine 32GB SD Karte wovon ich nur 8GB benötige. Ein dd Backup sichert aber immer 32GB, d.h 24GB zu viel.

Der dd Backup sichert immer die ganze SD Karte. Ab der Version 0.6.1.3 gibt es den Konfigurationsparameter DEFAULT_DD_BACKUP_SAVE_USED_PARTITIONS_ONLY, der dafür sorgt, dass nur die definierten Partitionen gesichert werden. D.h. man muss mit gparted oder einem anderen Partitionierungstool nur eine kleinere Partition von 8GB erstellen. Die aktuellen Partitionsgrößen kann man mit dem Befehl lsblk kontrollieren.

17) Wie kann ich feststellen, dass der rsync tatsächlich Backup Hardlinks benutzt um Speicherplatz zu sparen?

Immer wieder berichten Benutzer, dass sie keinen rsync Backup benutzen können, da raspiBackup meldet, dass keine Hardlinks auf dem Backupspace erzeugt werden können. Hardlinks werden erfolgreich von raspiBackup benutzt wenn ein lokaler USB Stick, eine lokale USB Platte oder auch eine per nfs gemountete Partition, die mit ext3/ext4 formatiert ist, benutzt wird. samba sowie sshfs unterstützt keine Hardlinks.

Der Befehl du -sh * zeigt den tatsächlich benutzen Speicherplatz an und du -shl * zeigt den Speicherplatz an, der belegt werden würde, wenn keine Hardlinks benutzt werden würden.

Beispiel:

root@raspberrypi:/media/nas-backup/raspberrypi# du -sh *
4,5G raspberrypi-rsync-backup-20160822-184617
4,5M raspberrypi-rsync-backup-20160822-190436
5,2M raspberrypi-rsync-backup-20160822-195250
5,7M raspberrypi-rsync-backup-20160822-201610

root@raspberrypi:/media/nas-backup/raspberrypi# du -shl *
4,7G raspberrypi-rsync-backup-20160822-184617
4,7G raspberrypi-rsync-backup-20160822-190436
4,7G raspberrypi-rsync-backup-20160822-195250
4,7G raspberrypi-rsync-backup-20160822-20161

18) Welche Services muss man vor dem Backup stoppen und anschliessend wieder starten?

Alle Services die irgendwelche Systemzustände in Datenbanken oder im Speicher oder auf dem Dateisystem speichern müssen gestoppt werden damit nicht während des Backups inkonsistente Datenstände entstehen, die dann erst beim wiederhergestellten System bemerkt werden und das Backup unbrauchbar machen. raspiBackup bietet zum Stoppen von Services vor dem Backup den Parameter -o und zum Starten der Services nach dem Backup den Parameter -a an.

Folgende Services sollten auf alle Fälle mit der Option -o gestoppt werden:

Service Stop Befehl
nfs service nfs-kernel-server stop
Samba service samba stop
Pilight service pilight stop
Cups service cups stop
Minidlna service minidlna stop
Apache service apache2 stop
Wordpress service wordpress stop
nginx service nginx stop
mysql service mysql stop
seafile service seafile stop
Owncloud Siehe Apache
FHEM /etc/init.d/fhem stop
cron service cron stop

 

Die Services sollten dann per Option -a wieder gestartet werden. Die Reihenfolge sollte dann genau umgekehrt sein zu der Stopreihenfolge. Falls man sich wirklich sicher ist dass kein Service zu stoppen und zu starten ist kann man ":" als Parameter bei Option -a und -o mitgeben.

Beispiel für -a

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

Beisplel für -o

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

19) Welche Formatierung muss eine Partition haben auf der ein Backup abgelegt wird?

Prinzipiell kann jedes Filesystem benutzt werden was an Linux gemounted werden kann. Allerdings gibt es ein paar Dinge zu beachten:

- Ein rsync Backup benötigt Support für Hardlinks welches von ext3/4 unterstützt wird. Ein ext4 Filesystem was über Samba freigegeben wird unterstützt keine Hardlinks. Eine Alternative ist NFS.

- FAT32 kann nur Dateien bis zu 4GB speichern. Ein dd Backup wird so gross wie die SD Karte (Ausser es wird die Konfigurationsoption DEFAULT_DD_BACKUP_SAVE_USED_PARTITIONS_ONLY benutzt) und somit i.d.R. größer als 4GB. Selbiges trifft auf das tar Backup zu was auch sehr schnell größer als 4GB wird. Eine Alternative dazu ist NTFS.

Allgemeine Empfehlung: Benutze wenn möglich ext3/4. Auf Linux benutze NFS für Netzwerklaufwerke. Auf Windows benutze NTFS auf exportierten samba Netzwerklaufwerken. Benutze FAT32 nur wenn sichergestellt ist, dass die Backups nicht größer werden als 4GB.

20) Ich habe Probleme beim Sichern meiner Backups auf einer Synology. Wie kann ich die beseitigen?

Es gibt diverse Benutzer von raspiBackup die ihre Backups per nfs auf einer Synology erfolgreich sichern. Leider habe ich keine Synology und kann deshalb nicht kompetent helfen. Allerdings gibt es eine spezielle Seite wo mir ein Benutzer von raspiBackup beschrieben hat, was er an seiner Synology konfiguriert hat, damit alles funktioniert.

21) Der Inhalt der Bootpartition ändert sich doch nicht. Warum wir trotzdem immer die Bootpartition bei jedem Backup neu gesichert?

Das stimmt in 98% der Fälle. Allerdings kann ein Firmwareupdate die Bootpartition ändern. Mit dem Konfigurationsparameter DEFAULT_LINK_BOOTPARTITIONFILES werden die Bootpartitionen im Backup mit Hardlinks verknüpft - sofern diese unterstützt werden. Damit kann man also pro Backup 60MB Backupspace sparen. Allerdings wird immer die Bootpartition erst einmal gesichert um dann zu testen ob sie sich zum vorhergehenden Backup geändert hat und dann durch einen Hardlink ersetzt. D.h. diese Option ist nur sinnvoll, wenn man einen sehr kleinen Backupspace hat.

22) Wie kann man  verschiedene Backupkonfigurationen in verschiedenen Backupläufen benutzen?

Die Konfigurationsparameter von raspiBackup werden in folgender Reihenfolge eingelesen und wirksam. Dabei können spätere Dateien bzw Optionen vorherige Optionen überschreiben.

1) /usr/local/bin/etc/raspiBackup.conf

2) ./.raspiBackup.conf (aktuelles Verzeichnis)

3) ~/.raspiBackup.conf (Home Verzeichnis)

4) Die optionale Konfigurationdatei, die mit der Option -f angegeben wurde

5) Aufrufparameter

23) Ich möchte den Backupfortschritt verfolgen. Gibt es eine Option um einen Fortschrittsbalken zu erhalten?

raspiBackup wird nur in der initialen Testphase von einem menschen aufgerufen werden. Später passiert das im Hintergund per cron. Es gibt deshalb keine spezielle Option dafür aber mit der Option -v schaltet man tar und rsync in den ausführlichen Modus und erhält somit auch Fortschrittsmeldungen.

24) raspiBackup meldet einen Fehler ACL_TYPE_ACCESS, Operation not supported bei der Benutzung des Backuptypen rsync

Die Fehlermeldung sieht in etwas wie folgt aus:

??? RBK0024E: Backupprogramm rsync hat einen Fehler bekommen. 
rsync: set_acl: sys_acl_set_file(media/pi, ACL_TYPE_ACCESS): Operation not supported (95)
 
Die Ursache liegt darin, dass rsync keine ACLs unterstützt. Diese sind aber auch in 99% der Fälle nicht notwendig. Die folgende Zeile in der /etc/mke2fs.conf
default_mntopts = acl,user_xattr
bewirkt dass jeder mount immer die acl für eine Partition einschaltet. Das trifft dann auch für die Backuppartition von raspiBackup zu, die standardmäßig auf /backup gemounted wird. Somit wird immer versucht acl Daten zu schreiben was von rsync nicht unterstützt wird.
 
Lösung:
Löschen von acl in default_mntopts in der Datei /etc/mke2fs.conf.
Kommentar schreiben
Hinweis:
Die eMail ist versteckt und nicht öffentlich sichtbar. Sie wird benutzt um über neue Kommentare zu informieren.