Quelle est la différence entre cp et dd lors du clonage de clés USB?

J’ai trouvé qu’il existe au moins deux méthodes pour cloner une clé USB: (avec /dev/sdb comme source alors que /dev/sdc comme cible)

  1. Clonage avec cp :

     sudo cp /dev/sdb /dev/sdc 
  2. Clonage avec dd :

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

Existe-t-il des différences significatives entre les deux commandes et pourquoi préférer dd à cp?

Dans ce cas, la différence est que dd est contraint de lire des blocs de 4096 octets à la fois, car vous avez utilisé bs=4096 . L’effet probable est que dd sera beaucoup, beaucoup plus lent que cp . Essayez avec une taille de bloc plus grande ( 10M , 50M ?).

La taille de la mémoire tampon la mieux adaptée aux périphériques actuels peut différer de celle de cp (ou de cat ). Vous ne pouvez pas contrôler facilement la mise en mémoire tampon de cp . L’utilité de dd brille quand:

  • vous devez copier de très gros périphériques, de sorte qu’il est utile de faire des essais pour déterminer la meilleure taille de bloc.
  • vous ne devez copier qu’une partie du disque. Vous pouvez spécifier le count pour limiter le nombre de blocs copiés.
  • vous voulez reprendre une copie interrompue. Vous ne pouvez pas le faire avec cp , mais vous pouvez essayer avec dd en utilisant les options de seek et d’ skip .
  • vous voulez le diriger vers l’entrée standard de quelque chose (certes, cat travaillera ici aussi):

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

dd utilité de dd est très bien discutée dans cet article d’Unix et de Linux: dd vs cat – le dd est-il toujours d’actualité?