Was genau macht der Befehl dd?

8

Vor ein paar Tagen war ich erfreut herauszufinden, dass es nicht allzu schwierig ist, ein ISO-Image ohne die Hilfe eines explizit dafür entwickelten Drittanbieterprogramms auf einen USB-Stick zu schreiben. Aber der Befehl (oder das Programm), der dies ermöglicht - dd - verwirrt mich.

Laut Wikipedia wurde es entwickelt, um Rohdaten zu kopieren und zu konvertieren, aber ehrlich gesagt finde ich diese Definition sehr zweideutig und vage. Ich verstehe, dass Sie damit ein Datenelement in ein anderes umwandeln können. Was passiert jedoch, wenn die angegebene Ausgabedatei zu klein ist, um in die angegebene Eingabedatei umgewandelt zu werden?

dd if=giant_file of=tiny_file

Wenn ich einen bootfähigen USB-Stick mit einer Image-Datei erstelle, erreicht der USB-Stick einen Dateisystemtyp von Isofs . Wenn ich jedoch ein Archiv oder eine ausführbare Datei auf das Laufwerk schreibe, behält er seinen regulären Dateisystemtyp bei.

Jede Klarstellung, was der Befehl dd wirklich tut oder wie er auf einer niedrigeren Ebene funktioniert, wäre sehr dankbar. Vielen Dank!

ICoffeeConsumer
quelle

Antworten:

8

ddErstellt eine byteweise Kopie von der Quelle zum Ziel mit einer optionalen Konvertierung, die durch das convArgument angegeben wird . Es führt liest und schreibt , wie durch die Angabe *bsund *flagOptionen, wobei der Bereich durch die definierten count, skipund seekOptionen.

Was passiert, wenn die angegebene Ausgabedatei zu klein ist, um in die angegebene Eingabedatei umgewandelt zu werden?

Wenn ofes zu klein ist, um es zu enthalten, werden ifdie Daten passend abgeschnitten. Beachten Sie, dass wenn ofes sich um eine reguläre Datei handelt, diese überschrieben wird.

Ignacio Vazquez-Abrams
quelle
1
ofwird überschrieben, auch wenn es sich nicht um eine Datei handelt - dies ist eine sehr gute Möglichkeit, eine Partition / ein Laufwerk (aus Versehen?) zu zerstören! Aus diesem Grund ist es sehr wichtig, das Ziel zu verdoppeln und möglicherweise dreifach zu überprüfen, wenn es sich um ein Laufwerk / eine Partition handelt, um sicherzustellen, dass Sie das richtige haben.
Bob
1
Technisch schreibt es in das Objekt, anstatt es zu überschreiben.
Ignacio Vazquez-Abrams
Danke für die Antwort. Was ist, wenn Sie keine Argumente angeben, aber so etwas tun dd if=executable of=archive.tar, vorausgesetzt, beide haben dieselbe Größe ? Wird das Archiv fehlerfrei in die ausführbare Datei umgewandelt?
ICoffeeConsumer
1
Es wird eine Byte-für-Byte-Kopie von executablebis zu archive.tar512 Bytes gleichzeitig erstellt. Die Binärdatei wird nicht in ein Archiv umgewandelt.
Ignacio Vazquez-Abrams