Raspbian - vollständiges Backup erstellen

dieterz1

Ensign
Registriert
Jan. 2014
Beiträge
245
Hallo,
ich suche nach einer einfachen Möglichkeit, einen Raspberry vollständig zu sichern (Backup-Datei).

Ich habe es bereits mit Win32DiskImager probiert.
Was mich an dieser Software aber stört ist, dass auch der freie Speicherplatz mitgesichert wird. D.h. wenn eine 64 GByte SD-Karte genutzt wird, dann ist auch die Backup-Datei 64 GByte groß, selbst wenn nur 20% des Datenträgers belegt sind.

Außerdem funktioniert der Restore nicht, wenn die neue SD-Karte trotz 64 GByte-Speichergröße minimal kleiner ist.

Kann man eigentlich im laufenden Betrieb die Raspbian-Partition verkleinern, sodass Win32DiskImager nur 32 GByte sichern muss?
 
am besten dd nutzen ;-)

ansonsten kannst du das image einfach zippen, rar oder was auch immer, dann fällt der leere platz weg

das image kannst du falls du ne kleinere karte hast auch nachträglich verkleinern

zum partition verkleinern muss glaube ich die platte ausgehängt werden. bin mir aber nicht sicher.
 
Ich nutze dafür (unter Windows) das USB Image Tool. Bietet darüber hinaus auch die Möglichkeit die Images direkt zu komprimieren. Bisher keine Probleme damit gehabt (Backup und Recovery klappen einwandfrei).
 
genau macht auch eine 1:1 kopie, man kann dem aber sagen wieviel sektoren kopiert werden

zippen kannst du auch das win32 image
 
Kannst ja mal balenaEtcher probieren.

Wenn ich mich richtig erinnere, wird aber auch hier der freie Speicherplatz mitgesichert.
 
Also ich mach das normalerweise mit einer der beiden folgenden Kommandos (oder einfach beides zusammen...)

Code:
dd if=/dev/foo of=bar.img bs=512 conv=sparse

dd if=/dev/foo bs=32M | gzip -c > bar.img.gz
 
Persönlich mache ich das am Mac und verwende den ApplePiBaker.
Der erstellt eine Iso bzw. erstellt auch gleich ein Archiv damit die Datei nicht ganz so riesig ist.
 
honky-tonk schrieb:
ansonsten kannst du das image einfach zippen, rar oder was auch immer, dann fällt der leere platz weg

Der Lord schrieb:
Ich nutze dafür (unter Windows) das USB Image Tool. Bietet darüber hinaus auch die Möglichkeit die Images direkt zu komprimieren. Bisher keine Probleme damit gehabt (Backup und Recovery klappen einwandfrei).

Nun, mit Win32DiskImager wurde von der microSD-Karte 1 (Raspbian, 64 GByte) bereits eine Backup-Datei angelegt, die nun auf einer HD-Festplatte liegt.
Diese Backup-Datei soll nun auf die microSD-Karte 2 zurückgespielt werden.

microSD-Karte 2 (ebenfalls 64 GByte) ist jedoch minimal kleiner, so dass der Restore mit Win32DiskImager fehl schlägt.

zip oder rar macht nur Sinn, um Platz auf der HD-Festplatte zu sparen. Spätestens wenn ein Restore durchgeführt werden soll, müsste ich die ZIP-Datei wieder entpacken.

Kann "USB Image Tool" mit meinem beschriebenen Problem umgehen? (sprich: wenn die neue SD-Karte minimal kleiner ist)
 
Du kannst zuvor den leeren Platz der Karte überschreiben, dann ist da kein vom Dateisystem gerade nicht belegter Platz mit Datenmüll, und das komprimieren von dd Daten geht besser.

dd if=/dev/zero bs=32768 of=/leere.Datei
rm /leere.Datei

Also diese leere Datei dann gleich wieder löschen, damit wieder freier Speicherplatz auf dem Laufwerk verfügbar ist.
Danach kannst ein Backup schreiben, sollte auch von laufendem System gehen, ist aber wohl ein bisschen gefährlich, dass das Backup dann korrupt wird.
Daher zumindest zuvor den File System Cache leeren / zurückschreiben:
https://www.systutorials.com/linux-flushing-file-system-caches/
Ansonsten SD-Karte mit Kartenleser an anderen Pi od. PC anschließen, und dort das Backup machen od. wiederherstellen. lzop ist ein auf Geschwindigkeit optimierter Kompressionsalgorithmus.

dd if=/dev/mmcblk0 bs=32768 | lzop -5 -c - > /mnt/Backupdatenträger/sicherung.lzop

Wiederherstellen geht dann halt umgekehrt:

lzop -d -c sicherung.lzop | dd of=/dev/mmcblk0 bs=32768

Wenn die neue SD-Karte minimal kleiner ist, kannst das Backup Image nachher wohl immer noch nachbearbeiten.
Allerdings bräuchtest dazu eine angeschlossene HDD mit viel Platz, weil das Image dort unkomprimiert als Datei speichern musst, und dann als Loop Device mounten musst. Am Loop Device, zB. /dev/loop4 kannst dann diese Operation mit resize2fs für die letzte Partition darauf ausführen:
https://access.redhat.com/articles/1196333
Oder nimm Gparted auf /dev/loop4 dafür, um die Partition und Filesystem zu verkleinern, das geht einfacher.
Danach solltest das Image auf die neue, kleinere SD-Karte schreiben können, denn am Ende des Images ist nun der nötige Platz frei geschaufelt worden.
 
Zuletzt bearbeitet:
Ich habe immer das hier verwendet, um die Größe zu reduzieren.
https://github.com/Drewsif/PiShrink
Wenn ich mich richtig erinnere, wird einfach die Partition auf ein minimum reduziert und beim ersten Bootvorgang wieder expandiert.
Bisher hatte ich damit noch keine Probleme. Man kann zusätzlich das ganze noch komprimieren, geht aber um einiges schneller, da die Datei viel kleiner ist.
 
  • Gefällt mir
Reaktionen: Art Vandelay
Coole Idee mit pishrink, ich habe das ganze grade mal getestet: Mittels dd ein aktuelles Image eines meiner Raspi Geräte gemacht und mit pishrink die Größe von 32 auf 7,6GB verkleinert.
 
Das Thema ist inzwischen gelöst.
Zufällig habe ich bei der Suche im Internet nämlich erfahren, dass das Betriebssystem Raspbian ein Bordmittel mitbringt, mit dem sich SD Images erstellen lassen.
Die Handhabe ich absolut primitiv, "per Knopfdruck" lässt sich ein Image erstellen, selbst wenn die neue Speicherkarte kleiner ist als die Alte.

Warum also kompliziert, wenn es einfach auch geht?
 
Zurück
Oben