Was ist der Unterschied bei der Verwendung von cp und dd beim Klonen von USB-Sticks?

11

Ich habe festgestellt, dass es mindestens zwei Methoden gibt, um einen USB-Stick zu klonen: (mit /dev/sdbals Quelle während /dev/sdcdes Ziels)

  1. Klonen mit cp:

    sudo cp /dev/sdb /dev/sdc
    
  2. Klonen mit dd:

    sudo dd if=/dev/sdb of=/dev/sdc bs=4096
    

Gibt es signifikante Unterschiede zwischen den beiden Befehlen und warum wird dd gegenüber cp bevorzugt?

MrWm
quelle

Antworten:

15

In diesem Fall besteht der Unterschied darin, dass ddnur 4096-Byte-Blöcke gleichzeitig gelesen werden müssen, da Sie diese verwendet haben bs=4096. Der wahrscheinliche Effekt ist, dddass viel, viel langsamer als sein wird cp. Versuchen Sie es mit einer größeren Blockgröße ( 10M, 50M?).

Die bestimmte Puffergröße, die für die aktuellen Geräte am besten geeignet ist, kann sich von cpder (oder catden) unterscheiden. Sie können die cpPufferung nicht einfach steuern . ddDas Dienstprogramm leuchtet, wenn:

  • Sie müssen sehr große Geräte kopieren, sodass sich das Experimentieren zur Ermittlung der besten Blockgröße lohnt.
  • Sie müssen nur einen Teil einer Festplatte kopieren. Sie können festlegen count, wie viele Blöcke kopiert werden sollen.
  • Sie möchten eine unterbrochene Kopie fortsetzen. Sie können dies nicht tun cp, aber Sie können es versuchen dd, indem Sie die Optionen seekund verwenden skip.
  • Sie möchten es an die Standardeingabe von etwas weiterleiten ( catfunktioniert zugegebenermaßen auch hier):

    dd if=/dev/sda bs=10M | ssh host dd of=/dev/sdb
    

ddNützlichkeit wird in diesem Unix- und Linux-Beitrag sehr gut diskutiert: dd vs cat - ist dd heutzutage noch relevant?

muru
quelle