web-dev-qa-db-fra.com

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

J'ai constaté qu'il existe au moins deux méthodes pour cloner une clé USB: (avec /dev/sdb comme source alors que /dev/sdc est la 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?

6
MrWm

Dans ce cas, la différence est que dd est contraint à la lecture de 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 être différente de cp '(ou cat'). Vous ne pouvez pas facilement contrôler la mise en mémoire tampon de cp. L'utilitaire de dd brille lorsque:

  • vous avez très gros périphériques à copier, 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 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 seek et skip.
  • vous voulez le diriger vers l'entrée standard de quelque chose (certes, cat fonctionnera aussi ici):

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

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

10
muru