Kategorie
GNU/Linux
Veröffentlicht
Lesezeit
3 Minuten
Diskussion
7 Kommentare

GNU/Linux

Dcfldd als Alternative zu Dd mit Fortschrittsanzeige und Hashing on-the-fly

dcfldd ersetzt dd, zeigt dabei den Fortschritt an und berechnet auf Wunsch gleich die Hashsumme der Kopie.

Clock
Dominic Alves, Brighton Clock Tower, CC BY 2.0

Das gute alte dd-Kommando ist ein leistungsfähiges Werkzeug zum Erstellen von Disk-Images oder zum Übertragen von Images auf neue Datenträger. Wer eine neue Distribution für den Raspberry Pi ausprobieren, Daten von einer defekten Festplatte retten oder den Rechner von einer HDD auf eine SSD umrüsten möchte, kommt mit dd ans Ziel. Allerdings hat dd einen kleinen Nachteil: Es gibt keine Fortschrittsanzeige. Besonders beim Sichern oder Beschreiben großer Partitionen kann das stören – man weiß nie, wie weit der Vorgang ist oder wie lange er noch dauert. Eine Lösung bietet hier das dd aus dem Department of Defense Computer Forensics Lab.

Ganz auf eine Fortschrittsanzeige muss man bei dd nicht verzichten – mit ein paar Tricks lassen sich Informationen ausgeben. Das ist jedoch mit etwas Aufwand verbunden. Einfacher ist es, direkt eine Alternative wie dcfldd zu verwenden. Das Programm basiert auf dem Quellcode von dd, bringt aber zusätzliche Funktionen mit, die vor allem für die Computer-Forensik nützlich sind – daher stammt es auch aus dem Umfeld des Defense Computer Forensics Lab.

Mit dcfldd lassen sich zum Beispiel während des Kopiervorgangs Hashsummen berechnen, um sicherzustellen, dass Original und Kopie identisch sind. Wer möchte, kann diese Funktion nutzen – muss aber nicht. dcfldd lässt sich auch einfach als Ersatz für dd mit integrierter Fortschrittsanzeige einsetzen. Die Installation ist unkompliziert, da das Tool unter Arch Linux, Debian und Ubuntu direkt aus den offiziellen Paketquellen verfügbar ist.

Terminal5 Zeilen
dcfldd unter Arch Linux installieren
sudo pacman -S dcfldd

dcfldd unter Debian oder Ubuntu installieren
sudo apt install dcfldd

Im folgenden Beispiel sichere ich eine SD-Karte eines Raspberry Pi mit dcfldd auf die Festplatte. Zum Schluss lasse ich mir die MD5-Summe anzeigen. Diese könnte alternativ auch mit md5log=md5.txt in eine Datei geschrieben werden – oder man verzichtet ganz darauf. Während des gesamten Vorgangs zeigt dcfldd laufend den Fortschritt an. Wie ihr seht, ist die Syntax nahezu identisch zu dd – ein Umstieg fällt also leicht.

Code7 Zeilen
$ sudo dcfldd if=/dev/sdd of=~/raspberry-pi.img hash=md5
27136 blocks (848Mb) written.
...
242432 blocks (7576Mb) written. Total (md5): af51683036143ff104f658e1798d447d

242560+0 records in
242560+0 records out

Update: Lange Zeit bot dd keine Möglichkeit, den Fortschritt eines laufenden Kopiervorgangs anzuzeigen – das hat sich inzwischen geändert. Seit Version 8.24 der GNU Coreutils (veröffentlicht 2016) unterstützt dd den Parameter status=progress. Damit zeigt das Tool während der Ausführung regelmäßig an, wie viele Bytes bereits verarbeitet wurden. So erhält man auch beim klassischen dd eine einfache, aber effektive Fortschrittsanzeige. Weitere Informationen zur Funktion findet ihr in diesem Beitrag.

Diskussion 7 Kommentare, zuletzt am

Caspi „Ich habe eine kurze Frage: wie kann ich dcflss dazu überreden, die angezeigten Daten aus der Console in ein log zu schreiben. Mit einem …“

Alle 7 Kommentare lesenKommentar schreiben

7 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Markdown wird unterstützt: **fett**, _kursiv_, [Linktext](URL), `Code`, Zeilen mit - für Listen, 1. für nummerierte Listen, dreifache Backticks für Codeblöcke.

Sicherheitsprüfung: läuft automatisch, du musst nichts tun.

  1. Avatar von Tom

    Ich verwende für solche Sachen immer ddrescue. Das besitzt auch eine Fortschrittsanzeige und außerdem noch die Möglichkeit eine log-Datei anzugeben. Anhand derer kann man auch eine Wiederherstellung oder eine Kopie von Partitionen einfach fortsetzen, ohne wieder komplett von vorne beginnen zu müssen.
    Zu installieren ist es unter Ubuntu per
    sudo apt-get install gddrescue
    unter Arch per
    sudo pacman -S ddrescue

    PS: Das Setzen von code mit dem ‚pre‘-Tag scheint nicht zu funktionieren…

  2. Avatar von Markus
    Markus

    Au sehr gut! Gerade wenn man viel und oft riesige Odroid- oder RPi-Images schreibt, war das bisher immer „Hmm hab ich noch Zeit für nen Kaffee oder ist’s gleich fertig?“ 🙂

  3. Avatar von Daniel
    Daniel

    Department of Defense? Hat sich da mal jemand den Code angeschaut um sicher zu gehen dass nicht noch jemand anderes Statusupdates bekommt?

  4. Avatar von der_bud
    der_bud

    Danke für den ‚cv‘ Tipp. Ich wollte für den gleichen Zweckgerade pv (pipeviewer) vorschlagen, der auch recht viel kann (wenn Größe bekannt ist auch prozentuale Fortschrittsanzeige, verbleibende Zeit, auch für cat, copy, move einrichtbar.
    dd if=/dev/input | pv -brt | dd of=/dev/output

    Mehr dazu siehe z.B. hier: http://www.catonmat.net/blog/unix-utilities-pipe-viewer/ oder Kommentare hier: http://blog.christophersmart.com/2009/11/28/checking-the-progress-of-dd/#comment-5453

  5. Avatar von random
    random

    Mit pv (pipeviewer) mach ich jetzt so meine zufall-dateien für luks container, mit „wann-fertig-Anzeige“ (ETA):

    size=500; # size in MiB
    dd if=/dev/urandom bs=1M count=$size 2&>/dev/null | pv -tpreb -s ${size}M | dd of=filecontainer_or_BlockDev 2&>/dev/null

  6. Avatar von Caspi

    Ich habe eine kurze Frage:
    wie kann ich dcflss dazu überreden, die angezeigten Daten aus der Console in ein log zu schreiben.
    Mit einem ergänzten „>/var/log/backup.log“ tut er es bei mir nicht!
    Besten Dank für einen tipp!

Mehr aus dem Blog

Gerade diskutiert

Kategorien

Schlagwörter

Zeilen sind breiter als der Bildschirm. Quer halten zeigt mehr – oder Umbrechen einschalten.

Linux und Ich — Dcfldd als Alternative zu Dd mit Fortschrittsanzeige und Hashing on-the-fly
https://linuxundich.de/dcfldd-alternative-dd-fortschrittsanzeige-und-hashing/ — gedruckt am 24. Oktober 2026