Kann ich eine Zip-Datei mit einem Disk-Image dekomprimieren und diese dann in einem Schritt auf einer SD-Karte speichern?

14

Ich habe folgende Einschränkungen:

  • Ich habe eine 1.0 GB- .zipDatei auf meinem Computer, die eine Datei enthält, ein Disk-Image von raspbian. Im unkomprimierten Zustand ist diese Datei 3,2 GB groß und trägt den Namen 2015-11-21-raspbian-jessie.img.
  • Nach dem Herunterladen der ZIP-Datei habe ich knapp 1,0 GB Speicherplatz auf meinem Computer, nicht genügend Speicherplatz, um das Bild auf meinen Computer zu extrahieren.
  • Diese Datei muss dekomprimiert und mit Plain Old auf eine SD-Karte geschrieben werden dd.

Kann ich das Bild unter diesen Einschränkungen auf die SD-Karte schreiben?

Ich weiß, dass es möglich ist, Daten weiterzuleiten tarund dann an eine andere Stelle weiterzuleiten. Funktioniert dies jedoch weiterhin für das zipDateiformat oder muss das gesamte Archiv dekomprimiert werden, bevor auf Dateien zugegriffen werden kann?

IQAndreas
quelle
Mir ist klar, dass ich die Zip-Datei einfach auf ein externes Flash-Laufwerk extrahieren kann, aber das macht mehr Spaß. Ich möchte dies für die Herausforderung (und Lernerfahrung) davon abziehen!
IQAndreas
3
Wenn Ihre SD-Karte ein Gerät ist /dev/sdh, führen Sie es aus unzip -p file.zip >/dev/sdh. (Ich weiß, dass die Verwendung von ddtraditionell ist, aber es ist nicht erforderlich.)
John1024
Huh. Würde das ohne funktionieren dd? Ich nahm an, dass der Parameter Blockgröße benötigt wird.
CRThaze
2
Ja, das geht ohne dd. In der Vergangenheit war die Blockgröße beim Beschreiben von Bändern sehr wichtig. Für Festplatten spielt es keine Rolle.
John1024
1
@TheCzar Abgesehen von Bändern kann der Parameter block size (Blockgröße) ddnur Daten verlieren oder Dinge verlangsamen (oder in seltenen Fällen die Dinge ein wenig beschleunigen, wenn sie groß genug sind). Vergiss dd, es ist sehr selten nützlich.
Gilles 'SO- hör auf böse zu sein'

Antworten:

24

Verwendung unzip -p:

unzip -p 2015-11-21-raspbian-jessie.zip 2015-11-21-raspbian-jessie.img | dd of=/dev/sdb bs=1M
yaegashi
quelle
Der Code wird ausgeführt, und weder mein Festplattenspeicher noch mein RAM-Speicher gehen zur Neige. Alles gut soweit.
IQAndreas
4
Oder einfach unzip -p … >/dev/sdb.
Gilles 'SO- hör auf böse zu sein'
1
@ Gilles neben der Kehrseite, ddist manchmal nützlich mit sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
Yaegashi
3
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Aber ich bevorzuge sudo chown $USER /dev/sdb, was mir eine zusätzliche Möglichkeit gibt, zu überprüfen, ob ich auf das richtige Gerät schreibe.
Gilles 'SO- hör auf böse zu sein'
Es hat wunderbar funktioniert! Stört es mich, wenn ich den genauen Dateinamen bearbeite, falls jemand nur den Befehl kopieren und einfügen möchte?
IQAndreas