Que fait exactement la commande dd?

8

Il y a quelques jours, j'ai été ravi de découvrir qu'il n'est pas si difficile d'écrire une image iso sur une clé USB sans l'aide d'un programme tiers explicitement conçu pour le faire. Mais la commande (ou le programme) qui facilite cela - dd - me laisse perplexe.

Selon Wikipedia, il est conçu pour copier et convertir des données brutes, mais honnêtement, je trouve cette définition très équivoque et vague. Je comprends que cela vous permet de transformer une donnée en une autre, mais que se passe-t-il si le fichier de sortie spécifié est trop petit pour être transformé en fichier d'entrée spécifié?

dd if=giant_file of=tiny_file

De plus, lorsque je crée une clé USB amorçable avec un fichier image, la clé USB atteint un type de système de fichiers isofs , mais si j'écris une archive ou un exécutable sur le lecteur, il conserve son type de système de fichiers normal.

Toute clarification de ce que fait réellement la commande dd ou de son fonctionnement à un niveau inférieur serait très appréciée. Merci!

ICoffeeConsumer
la source

Réponses:

8

ddeffectue une copie octet par octet de la source vers la destination, avec une conversion facultative spécifiée par l' convargument. Il effectue des lectures et écritures comme spécifié par la *bset les *flagoptions, avec la plage définie par les count, skipet les seekoptions.

que se passe-t-il si le fichier de sortie spécifié est trop petit pour être transformé en fichier d'entrée spécifié?

Si ofest trop petit pour être contenu, ifles données sont tronquées pour s'adapter. Notez que s'il ofs'agit d'un fichier normal, il est remplacé.

Ignacio Vazquez-Abrams
la source
1
ofest écrasé même s'il ne s'agit pas d'un fichier - c'est un très bon moyen de (accidentellement?) détruire une partition / un lecteur! C'est pourquoi il est très important de doubler et peut-être de vérifier la destination s'il s'agit d'un lecteur / d'une partition, pour vous assurer que vous avez le bon.
Bob
1
Techniquement, il écrit dans l'objet plutôt que de l'écraser.
Ignacio Vazquez-Abrams
Merci d'avoir répondu. Et si vous n'incluez aucun argument, mais faites quelque chose comme dd if=executable of=archive.tar, en supposant qu'ils sont tous les deux de la même taille. L'archive sera-t-elle parfaitement transformée en exécutable?
ICoffeeConsumer
1
Il fera une copie octet par octet de executableà archive.tar512 octets à la fois. Cela ne transformera pas le binaire en archive.
Ignacio Vazquez-Abrams