So verkleinern Sie eine Bilddatei nach dem Zuweisen des vollständigen Speicherplatzes

13

Ich experimentiere gerade mit der Sicherung einer Raspberry Pi (Raspbian) SD-Karte. Ich verwende Win32DiskImager, um das Bild (vom SD-Kartenleser) erfolgreich auf meine Festplatte zu lesen - aber jetzt das Größenproblem. Das Bild ist nur größer als die ursprüngliche SD-Karte und kann nur auf eine größere SD-Karte zurückgeschrieben werden. Wenn Sie eine Sicherungskopie erstellen, hat dies dasselbe Problem.

Wie kann ich nach dem Erstellen einer IMG-Datei den gesamten nicht verwendeten Speicherplatz wieder entfernen? (Liegt das daran, dass ich mit raspi-config den gesamten verfügbaren Speicherplatz dem Root zugewiesen habe?)

Ich habe versucht , eine Vorstellung davon , was die Partition (en) aussehen wie mit Cygwin zu bekommen, kann aber nicht schaffen , erhalten fdisk Arbeits (-bash: fdisk: Befehl nicht gefunden) - (nach dem Lesen Bild einer 16Gb - Karte mit nicht partitionierten Speicherplatz an das Ende: Abschneiden möglich? )

Renier Delport
quelle

Antworten:

12

Der beste Weg, den ich gefunden habe, ist die Verwendung von GParted (Sie können entweder ein Linux-basiertes Betriebssystem verwenden oder von einem GParted Live-USB booten). Es ist einfach genug, detaillierte Anweisungen zu finden, wie man jeden dieser Schritte ausführlich ausführt, aber hier ist die allgemeine Methode, die ich gefunden habe, um zu arbeiten:

  1. Führen Sie GParted aus, suchen Sie Ihre SD-Karte in der Geräteliste und verkleinern Sie die Hauptpartition so klein wie möglich.
  2. Nehmen Sie den Wert des letzten Sektors dieser Partition und multiplizieren Sie diesen mit der Sektorgröße (512 für mich; ich nehme an, dies ist Standard, obwohl Sie dies in den GParted-Einstellungen für Ihr Gerät überprüfen können): Dies gibt Ihnen die Gesamtgröße in Bytes Kopieren.
  3. Teilen Sie die Gesamtzahl der Bytes durch 4096 (aufrunden, wenn Sie müssen - besser, um etwas mehr Platz als nicht genug zu haben). Dadurch erhalten Sie die 'Anzahl', die Sie benötigen, um unter Linux am Terminal den folgenden Befehl einzugeben Umgebung (Sie können dies wahrscheinlich vom GParted Live USB-Betriebssystem-Terminal oder in Cygwin ohne sudo tun, solange Sie es als Administrator ausführen):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

Ändern Sie gegebenenfalls den Speicherort des Eingabegeräts. Auf diese Weise erhalten Sie eine endgültige Bilddatei, die so klein wie möglich ist und keinen leeren Bereich enthält.

Mike Roberts
quelle
Ich kann überprüfen, ob dies funktioniert. Ich habe es gerade vor ein paar Minuten versucht, von einer 8-GB-Karte zu einer 4-GB-Karte zu wechseln. Dies sollte funktionieren, vorausgesetzt, Ihre Daten sind kleiner als Ihre Zielkarte.
PNDA
Sort off hat diesen Beitrag vergessen, da ich weitergezogen bin. Werde es in Zukunft ausprobieren. Scheint, dass dies ein häufiges Problem ist, also danke für deine Eingabe.
Renier Delport
Dies sollte als die richtige Antwort markiert werden! Vielen Dank!
Rodripf
Irgendwie unter Windows?
Flash Thunder
1
Sie können von einem GParted Live USB booten.
Mike Roberts
7

Es gibt ein nettes Tool namens pishrink , das die Größe eines dd-Image so weit wie möglich reduziert, indem die Root-Partition verkleinert wird. Wenn Sie das wiederhergestellte Image zum ersten Mal starten, wird die Partition wieder auf ihre maximale Größe erweitert. Wenn Sie Windows verwenden, verwenden Sie einfach Linux auf Ihrem Raspberry, um das Image zu verkleinern.

framp
quelle
0

Die neueste Version von Win32DiskImager verfügt über die Option "Schreibgeschützt zugewiesene Partitionen". Es schreibt nur belegten Speicherplatz, nicht leer.

  1. Verkleinern Sie die Partition auf der SD-Karte mit GParted.
  2. Erstellen Sie ein Bild mit Win32DiskImager von einer größeren Karte.
  3. Schreiben Sie das Bild mit Win32DiskImager auf eine kleinere Karte, indem Sie die oben erwähnte Option verwenden.
Pavol Fejko
quelle
-1

Die einfache Antwort ist, dass Sie nicht können. Wenn Sie das Bild verkleinern möchten, verwenden Sie die Komprimierung, was die meisten tun (unter NIX funktioniert gzip gut). Auf dieser Seite finden Sie viele Diskussionen dazu.

Die Alternative besteht darin, nur Dateien zu sichern. Mein Ansatz wird im Folgenden beschrieben. /raspberrypi//a/28087/8697

Milliways
quelle
1
Sie können (wenn der Dateninhalt kleiner als die neue SD-Karte ist)
Wilf
2
Komprimierung hilft nicht. Es ist keine Frage des Speicherplatzes, auf dem sich die IMG-Datei befindet. Es ist eine Frage des Platzes auf der SD-Karte, auf die die IMG-Datei geschrieben werden soll
Thomas Weller,
@Thomas Wenn Sie die IMG-Datei komprimieren, wird sie kleiner, sodass sie (hoffentlich) auf die SD-Karte passt, auf die Sie sie schreiben möchten. Fehlt mir etwas?
user253751
@immibis: Sie können die IMG-Datei gzipen, damit sie weniger Speicherplatz auf der Festplatte Ihres PCs beansprucht. Wenn Sie die gezippten Daten auf die SD-Karten schreiben, wird sie nicht gestartet. Die Daten müssen zum Booten im richtigen Format vorliegen und nicht im gzip-Format.
Thomas Weller
@Thomas Oh, ich dachte, das OP wollte ihre Backups aus irgendeinem Grund auf einer anderen SD-Karte speichern, anstatt sie wiederherzustellen.
user253751