Select Page

Mac OS X: dd schneller und mit Fortschrittsanzeige

by | May 5, 2015 | Mac

Wenn ich weiß, dass die Hardware eigentlich deutlich mehr hergeben sollte, gehört Geduld nicht unbedingt zu meinen großen Stärken.
Konkret bestand die Aufgabe darin, eine Raspbian-Installation von einer SD-Karte auf zwei andere zu transferieren. Da mein Mac nur (oder immerhin noch) einen SD-Kartenslot hat und kein externer Kartenleser zur Verfügung stand, musste der Umweg über das Ziehen eines Images von der Originalkarte und anschließendes Schreiben desselbigen auf die neuen Karten her. Das altbekannte dd ist hierfür das perfekte Werkzeug.
Vorher wird die Karte aber erst mal ausgehängt. In meinem Fall ist das /dev/disk2:

diskutil umountDisk /dev/disk2

Dann geht es mit dd weiter:

dd if=/dev/disk2 of=Image.dd

Da dd von Haus aus keine Fortschrittsanzeige mitbringt, kann man sich unter anderem durch Drücken von “CTRL+t” einen Zwischenstand ausgeben lassen. Die Ausgabe umfasst die aktuelle Systemlast, den Namen und die PID des aktuell im Vordergrund laufenden Prozesses, sowie seine Kernel- und User-Zeiten und im Falle von dd eben auch den aktuellen Fortschritt.
Das sieht dann zum Beispiel so aus:

load: 1.69 cmd: dd 69334 uninterruptible 0.00u 1.97s
13+0 records in
13+0 records out
109051904 bytes transferred in 17.182351 secs (6346739 bytes/sec)

Circa 6 MB/s von einer Class10-SD-Karte? Das muss doch schneller gehen.
Aus der Linuxwelt kommend versuchte ich also als Erstes, per Angabe der Blockgröße (bs=8M) mehr Durchsatz zu erzwingen. Der Lerneffekt hierbei war, dass die BSD-Version von dd unter Mac OS X die Angabe der Einheit nur kleingeschrieben schluckt. Also:

dd if=/dev/disk2 of=raspiImage.dd bs=8m

Damit änderte sich am Tempo aber so gut wie nichts. Bei einer zum Vergleich hergenommenen Class6-Karte macht der Parameter aber doch einen wesentlichen Unterschied. Also wird er beibehalten und fix noch mal das globale Wissen angezapft,  wo sich der Tip findet, anstelle von /dev/diskX doch besser /dev/rdiskX zu verwenden.

dd if=/dev/rdisk2 of=test.dd bs=8m

Kontrolle mit CTRL+t:

load: 1.77  cmd: dd 70036 uninterruptible 0.00u 7.38s
886+0 records in
886+0 records out
7432306688 bytes transferred in 166.815176 secs (44554140 bytes/sec)

Etwas mehr als 42 MB/s. Das ist schon eher die Antwort, die ich suchte 😉
Da das häufige Drücken von CTRL+t und anschließende Umrechnen der Byteangaben in eine menschenverständliche grobe Abschätzung der zu erwartenden Dauer eine Sache ist, die der Computer viel besser und schneller machen kann, bietet sich hierfür das Kommando “pv” an.
Zum Lesen von einer Karte (-s 16g an die Größe der Karte anpassen):

dd if=/dev/rdisk2 bs=8m | pv -petra -s 16g > Image.dd

Um das Image auf eine Karte zurückzuschreiben:

pv -tpreb Image.dd | dd of=/dev/rdisk2 bs=8m

Natürlich gelten die hier gemachten Vorschläge nicht nur für SD-Karten und gegebenenfalls mit Abwandlungen auch für Linuxer 🙂
Quellen:

Solution: dd too slow on Mac OS X


Progress while copying an img file to/from an SD card with OSX/Linux

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Mac

Raycast, ein fast neuer und genialer App Launcher

Wenn es um die Effektivität bei der Arbeit am Mac geht, gibt es viele Werkzeuge, die dir helfen können, produktiver zu sein. Eines der Tools, das ich sehr empfehlen kann, ist Raycast - ein Application Launcher für den Mac. Raycast hilft dir, deine Arbeitsabläufe zu...

Homebrew – Der fehlende Paketmanager für macOS

Manche haben noch nie davon gehört, einige kennen ihn, und viele lieben ihn. Zu Teenagerzeiten kannte ich nur Windows und dessen Umgang, wie man Software installiert und ebenfalls lästige Update-Hinweise beim Öffnen der Programme. Wie viele andere auch, begann ich...

Sync pictures older than one year between iPhone and Photo

I don't use the cloud to store my pictures so I have to sync the pictures between my Mac and my iPhone on a regular basis. No big hassle, because usually it works like a charm. The problem I have is that I want more pictures than last year, also I don't want to sync...

Von Fackeln, elektrischen Schafen und Datenpunkten

Hallo und Willkommen im Jahr 2021! Damit sind wir offiziell 2 Jahre nach dem originalen Zeitablauf von Blade Runner welcher 2019 spielt. Hmm, nirgends sind Nexus 6 Modelle die Rumlaufen und von elektrischen Schafen träumen. (Auch keine Flugautos) *seufz*. Egal !!...