EDIT: Aus irgendeinem Grund wurde nur ein Teil meines Beitrags gespeichert. Ich habe ihn jetzt auf den vollständigen Inhalt aktualisiert
Obwohl sich dieses Thema um den Raspberry Pi dreht, ist es im Grunde auf alle SD-Karten anwendbar, die das folgende Setup haben: Ein Dateisystem nimmt nur einen Bruchteil der Gesamtgröße der Karte ein. Kurz gesagt geht es bei dieser Frage darum, herauszufinden, wie manNURdas FS (oder mehr, wenn mehrere Partitionen vorhanden sind) in ein Backup-Image. Weitere Details finden Sie weiter unten.
Als ich nach dem Kauf im Dezember letzten Jahres anfing, mit dem Pi herumzuspielen, kam es zu einigen Beschädigungen der SD-Karte und ich verlor deren Inhalt. Das lag daran, dass ich den Strom nicht richtig ausgeschaltet hatte, anstatt ihn normal herunterzufahren, also war das hier keine große Sache. Da ich jedes Mal die Karte formatieren, das Raspbian-Image darauf schreiben, es in den Pi stecken, die Platine hochfahren, das Dateisystem erweitern, alles neu installieren und neu konfigurieren musste, begann ich nach besseren Lösungen zu suchen:
- Ändern der Größe des Bildes und des darauf befindlichen FSVorauf die SD-Karte schreiben -DasLink veranschaulicht perfekt, wie man ein Image vergrößert (mit
dd
und/dev/zero
als Eingabequelle) und das anpasstext4
(ich glaube, es ist EXT4 für Raspbian (ohne die kleine FAT32-Partition für die Boot-Komponenten)). Dies löst das Problem, dass man dasDateisystem erweiternFunktion des Raspberry-Konfigurationstools, die im Grunde den Rest des unformatierten Speicherplatzes auffrisst, sei es 2 GB, 4 GB, 16 GB, 32 GB usw. Natürlich erhöht die Vergrößerung des Images auch die Zeit, diedd
zum Schreiben auf die SD-Karte erforderlich ist, ermöglicht jedoch auch den nächsten Schritt der Anpassung, nämlich - Anpassen der installierten Software - mit
chroot
oderproot
(plusqemu
) ist es möglich (wie gesehenHierUndHier), um alles zu installieren/bauen, was Sie möchten, wenn Sie das Raspbian-FS richtig darin mountenchroot
. Dies ist auch ein wesentlicher Schritt für viele Builds, die Cross-Compiling erfordern (wie Qt für Pi) – Sie können Dinge nativ auf dem Pi kompilieren, aber das braucht viel Platz und viel Zeit.
So habe ich es im Grunde genommen gemacht, um meine Bilder anzupassen. Das Problem hier ist die Reihe von Verfahren, die mit der umgekehrten Operation verbunden sind – den Inhalt der SD-Karte zu nehmen und ihn optimal auf Ihrem PC zu speichern. Komprimierung ist natürlich eine der entscheidenden Möglichkeiten, die Sie nutzen können, aber das reicht nicht aus. Bei der Verwendung dd
können Sie entweder die gesamte SD-Karte (einschließlich der leeren Blöcke) auf Ihren Computer schreiben oder die gewünschte Größe und Anzahl der Sektoren auswählen. Die zweite Methode bietet eine bessere Speichernutzung, erfordert jedoch sorgfältige Berechnungen. Wenn Sie es abkürzen, könnte das Ergebnis ein kaputtes FS sein (oh, das habe ich nicht schon oft gesehen ...).
Ich suche nach einer Lösung, die sehr ähnlich ist zu dem, wasClonezillaAngebote - Sie können klonennur die Blöcke, die tatsächlich Inhalt habenund den Rest so entsorgenSchrumpfung des FSund ein voll funktionsfähiges FS auf viel kleinerem Raum speichern zu können. Das habe ich letztes Jahr gemacht, als ich meinem Nachbarn geholfen habe, die Daten auf seiner kaputten Festplatte auf einem MacBook zu retten.
Beispiel: Wenn Sie eine Raspbian Jessie Lite-Installation haben, werden nur ca. 1,3 GB auf Ihrer SD-Karte verwendet. Stellen Sie sich nun vor, die Karte ist 32 GB groß. Natürlich möchten Sie sie mit der Zeit formatieren und den verbleibenden Speicherplatz verwenden, aber das ist im Allgemeinen nicht der Fall (zumindest bei mir). Wenn ich also dd
blind verwende, erstelle ich im Grunde eine 32 GB große Image-Datei. Die Komprimierung wird die meisten Gigabyte dort beseitigen, aber das Zurückschreiben auf die SD-Karte zu einem späteren Zeitpunkt, um einen früheren Zustand Ihres Raspbian wiederherzustellen, wird ein sehr, sehr langer Prozess sein. Ich kann auch das FS kopieren (wieder mit dd
). Aber was ist, wenn die eigentliche Installation (alle Dateien) nur etwa 600 MB auf dieser Partition benötigt? Warum sollte ich 1,3 GB kopieren wollen, wenn ich nur 600 MB benötige? Und was ist, wenn ich eine SD-Karte mit einem Raspbian habe, bei dem die Funktion „Dateisystem erweitern“ des Konfigurationstools verwendet wurde und die gesamte SD-Karte formatiert ist, obwohl n
% davon tatsächlich verwendet werden?
Irgendwelche Ideen, wie man das mit möglichst wenig Aufwand und Bastelei erreichen kann?
Antwort1
Dump/restore die kleine FAT-Partition durch dd
(wenn das überhaupt nötig ist), aber verwenden e2image -a
(von dere2fsprogsPaket) für die Hauptpartition. Für die Wiederherstellung auf Flash -c
scheint die Option nützlich zu sein (sie überschreibt nur, was auf dem Ziel wirklich anders ist).
Antwort2
Nun, ohne Ihre Frage direkt zu beantworten, hier ist, was ich für einfache Wiederherstellungen getan habe
- dd den Inhalt der SD-Karte in eine Datei, nachdem alle benötigten Pakete installiert wurden
- Komprimieren Sie die Datei mit bZIP mit maximaler Komprimierung und bewahren Sie die gZIP-Datendatei als Backup auf.
- Im Falle einer Beschädigung stellen Sie die Sicherungsdatei nach bunzip mit dd wieder her.