Comment utiliser la commande dd dans Linux

dd est l’une des commandes les plus importantes dans Linux, principalement utilisée pour sauvegarder des disques durs et des partitions. Lorsqu’elle est utilisée correctement, dd peut être un outil puissant pour écrire des données d’une partition à une autre et effectuer différentes tâches avec des fichiers. Ici, nous vous montrons comment bien utiliser la commande dd.
Table des matières
- L’histoire de dd
- Opérandes de base
- Création d’une image disque
- Sauvegarde d’une image disque sur une partition
- Création d’une image disque compressée
- Spécification d’une taille de bloc
- Effacement d’un disque dur
- Création d’une clé USB bootable
- Clonage de partitions spécifiques avec dd
- Dumping du contenu d’un CD avec dd
- Gravure du dump ISO sur CD
- Questions fréquemment posées
Lisez aussi : 5 distributions Arch Linux plus faciles à installer et à utiliser
L’histoire de dd
La commande a été initialement développée aux Laboratoires Bell d’AT&T dans les années 1970 par un informaticien nommé Ken Thompson. Elle a été développée pour les systèmes basés sur Unix et a reçu un nom choisi en référence à une déclaration trouvée dans le langage de contrôle de tâches d’IBM, qui s’appelait “DD”. Il convient de noter que la syntaxe de la commande ressemble de près à une déclaration dans le langage de contrôle de tâches.
La commande a été conçue à l’origine comme un utilitaire pour convertir l’ASCII en EBCDIC et vice versa. Elle a été intégrée pour la première fois à une version d’Unix en 1974, avec la sortie de la 5ème édition du système d’exploitation.
dd a été appelé “destructeur de disque” en plaisantant dans la communauté Unix en raison de sa capacité à détruire des données sur des disques durs lorsqu’il est mal utilisé.
Lisez aussi : Comment chiffrer vos fichiers dans le cloud en utilisant Rclone
Opérandes de base
Maintenant que vous en savez un peu plus sur l’historique de la commande et ses capacités destructrices lorsqu’elle est mal utilisée, il est temps d’apprendre à tirer parti de tout ce qu’elle offre aux utilisateurs de différentes distributions Linux.
Tout d’abord, consultez le manuel en utilisant le drapeau --help :
dd --help
Il y a deux opérandes pour la commande qui sont les plus couramment utilisées. Ce sont if et of, qui signifient “fichier d’entrée” et “fichier de sortie” respectivement. L’opérande if est utilisée pour représenter l’emplacement source, tandis que l’opérande of est utilisée pour représenter l’emplacement où vous avez l’intention de sauvegarder les données de l’emplacement d’entrée.
dd if= of= Les emplacements source et de sortie les plus courants incluent les disques durs, les partitions et les images disque.
Avant d’utiliser la commande, il peut être utile d’utiliser l’utilitaire fdisk pour afficher les partitions de votre système. Cela peut facilement être fait en utilisant le drapeau -l de la commande :
sudo fdisk -l
Lisez aussi : 4 façons de cloner un disque dur entier sur Linux
Dans ce cas, if est utilisé pour représenter le disque “ /dev/sda “, et of représente le disque “ /dev/sdb “, où les données de “ /dev/sda “ seront sauvegardées :
dd if=/dev/sda of=/dev/sdb
Création d’une image disque
L’un des meilleurs cas d’utilisation de la commande est la création d’images disque au format de fichier “.img”. Cela est extrêmement utile pour sauvegarder des données sur votre système basé sur Linux et est probablement le moyen le plus rapide et le plus simple de sauvegarder un disque dur entier.
La logique ici est principalement la même dans ce cas, avec l’opérande if représentant le disque “ /dev/sda “ et l’opérande of représentant un fichier “.img”, où les données du disque dur seront sauvegardées :
dd if=/dev/sda of=/tmp/image.img
Lisez aussi : Le guide ultime des commandes Apt et Apt-Get
Sauvegarde d’une image disque sur une partition
Créer une image disque avec la commande est assez simple, mais il en va de même pour la version inversée de ce processus.
Dans ce scénario, notre fichier d’image disque agit comme le fichier d’entrée, et notre nouvelle partition agit comme le fichier de sortie. L’utilitaire sauvegarde les données de notre image disque sur notre partition “ /dev/sdb “ :
dd if=/tmp/image.img of=/dev/sdb
Lisez aussi : Comment utiliser la commande ps dans Linux pour tuer un processus
Création d’une image disque compressée
Si vous créez une image disque d’un disque dur de taille complète, vous pouvez imaginer que la taille du fichier de l’image disque finale sera probablement assez grande. Pour cette raison, l’utilitaire dd a une fonctionnalité qui crée des images disque compressées.
Une image disque compressée peut être créée en utilisant la commande pipe |. Dans ce cas, elle est utilisée pour prendre le contenu du fichier d’entrée et effectuer la commande gzip avec un drapeau -c, le contenu étant emballé dans un fichier “.gz” :
dd if=/dev/sda | gzip -c > /tmp/image.gz
Lisez aussi : Comment utiliser cURL pour le transfert de données en ligne de commande et plus encore
Spécification d’une taille de bloc
Vous pouvez également jouer avec la vitesse de l’opération de la commande dd. Cela peut être accompli en utilisant l’opérande bs, qui est utilisée pour représenter la taille du bloc. La taille du bloc représente le nombre d’octets que dd copie dans le fichier de sortie en une seule instance. Elle est représentée en multiples de 1024 octets, et la valeur par défaut est fixée à 512 octets. Plus la taille du bloc est élevée, plus les données seront rapidement sauvegardées dans le fichier de sortie.
Dans ce cas, nous fixons la taille du bloc à 2048 :
dd if=/dev/sda of=/tmp/image.img bs=2048La taille du bloc peut également être spécifiée en kilooctets :
dd if=/dev/sda of=/tmp/image.img bs=2K
Lisez aussi : Comment utiliser la commande lsof dans Linux pour lister les fichiers ouverts
Effacement d’un disque dur
dd peut également être utilisé pour effacer votre disque dur. Cela est accompli en lisant des zéros ou des caractères aléatoires depuis “ /dev/zero “ ou “ /dev/urandom “ et en les sauvegardant sur le disque dur/partition, ce qui écrase les données qui s’y trouvent. Cela est extrêmement utile lorsque vous voulez vous assurer que vos données ne peuvent pas être facilement récupérées après avoir vendu ou autrement disposé de votre disque dur.
Écraser un disque dur en utilisant des zéros :
dd if=/dev/zero of=/dev/sdb
Vous pouvez également écraser le périphérique en utilisant des caractères aléatoires :
dd if=/dev/urandom of=/dev/sdb
Lisez aussi : Comment exécuter des commandes Bash en arrière-plan dans Linux
Création d’une clé USB bootable
La création de clés USB flash bootables à l’aide de fichiers “.iso” avec la commande est simple :
dd if=os.iso of=
Clonage de partitions spécifiques avec dd
Une autre utilisation brillante de dd est le clonage de partitions actives sur votre système Linux. Contrairement à un fichier IMG, le clonage vous permet de créer une copie exacte d’une partition particulière et de l’utiliser immédiatement. Cela peut être utile si vous avez une configuration multi-disques et que vous souhaitez créer des partitions redondantes pour votre système.
Pour cloner la partition de “ /dev/sda4 “ à “ /dev/sdd1 “.
dd if=/dev/sda4 of=/dev/sdb1 conv=noerror,syncLe paramètre conv vous permet d’inclure des options supplémentaires pour modifier le comportement de dd. Cela peut être aussi simple que de convertir un nom de fichier en majuscules ou quelque chose de complexe comme changer la propriété d’un bloc. Dans ce cas, j’utilise noerror et sync :
- L’option “noerror” indique à dd de continuer à copier à travers un fichier de périphérique même s’il signale des erreurs de périphérique. Cela peut être utile si le périphérique où se trouve votre partition est déjà défectueux, car “noerror” garantit que dd copiera toutes les données récupérables dans cette partition.
- L’option “sync” indique à dd de remplir chaque bloc de données entrant dans le tampon de copie. Ce que cela signifie, c’est que dd s’assurera que chaque bit de données qu’il peut copier est exactement le même entre la source et la destination. Cela vise à garantir l’intégrité des données de la partition que vous clonez.

Lisez aussi : Comment utiliser la commande lp dans Linux pour imprimer des fichiers depuis le terminal
Dumping du contenu d’un CD avec dd
Il est également possible d’utiliser dd comme outil de dumping pour le contenu des disques. Semblable à un fichier IMG, vous pouvez le faire en utilisant un lecteur de disque comme entrée et l’extension .ISO comme sortie. Considérez l’exemple suivant :
dd if=/dev/cdrom of=/tmp/dump.iso conv=noerror,syncCette commande indiquera à dd de charger le périphérique CD-ROM et de copier son contenu dans un fichier ISO.

Une fois terminé, vous pouvez utiliser la commande file pour vérifier si le fichier dumpé est une image ISO 9660 :
file /tmp/dump.isoGravure du dump ISO sur CD
Ensuite, vous pouvez utiliser dd pour créer des duplicatas du fichier ISO que vous venez de créer. Pour ce faire, vous devez insérer un disque vierge dans votre lecteur et utiliser “ /dev/cdrom “ comme fichier de sortie de dd. Avec cela, vous pouvez ensuite exécuter la commande suivante pour graver correctement le fichier ISO sur le disque :
dd if=/tmp/image.iso of=/dev/cdrom obs=32k seek=0Cette commande n’essaie pas d’utiliser des contournements d’erreur ou des vérifications d’intégrité. Au lieu de cela, elle définit deux options spécifiques à l’écriture sur CD-ROM :
- L’option “obs” définit la taille des blocs que dd va écrire sur le disque. Dans ce cas, la commande utilise 32 kilooctets comme base pour les transferts de médias optiques.
- D’autre part, l’option “seek” indique à dd de définir le début du transfert à un bloc de données spécifique. Pour transférer correctement vers un CD-ROM, il est important de le définir à 0 afin que dd écrive immédiatement dans le premier secteur du disque.

Lisez aussi : 8 invites Bash utiles et intéressantes
Questions fréquemment posées
Est-il possible de voir la progression d’une opération dd ?
Oui ! Il est incroyablement facile de regarder la progression d’une opération dd. Pour ce faire, il vous suffit d’inclure le paramètre status à la fin de votre commande dd :
dd if=/dev/sda4 of=/dev/sdd1 conv=noerror,sync status=progress
L’option “progress” indique à dd d’imprimer les blocs qu’il est en train de copier sur la sortie standard, ce qui vous permet effectivement de voir la progression de la commande. En plus de l’option “progress”, le paramètre status accepte également deux valeurs supplémentaires :
- Noxfer : La valeur “noxfer” est similaire à “progress” mais elle n’imprime pas les informations de transfert globales à la fin de la commande. Cela peut être utile si vous utilisez des commandes dd dans le cadre d’un grand pipe UNIX.
- None : La valeur “none” indique à dd de ne pas imprimer d’informations sauf les erreurs lorsqu’il s’exécute. Cela est utile si vous exécutez des tâches dd programmées telles que la création de fichiers IMG de sauvegarde pour des partitions actuellement actives.
Est-il acceptable de toujours définir une taille de bloc élevée pour accélérer les transferts ?
Non. Bien que définir une taille de bloc élevée accélère certainement le taux de transfert de dd, cela ne garantit pas que le périphérique sur lequel vous écrivez s’initialise correctement. Par exemple, définir une taille de bloc élevée pour des médias optiques tels qu’un CD-ROM ou un DVD-ROM peut entraîner des disques illisibles lors de la lecture sur un lecteur de disque.
Une bonne règle de base est d’utiliser des tailles de bloc élevées uniquement lors du dumping de médias tels que des disques et des clés USB. De plus, il est également bon de fixer la taille de bloc maximale à 2048 kilooctets seulement. Cela garantit que vous pouvez toujours remettre le contenu d’un disque sur un CD ou un DVD.
J’ai essayé de créer une clé USB bootable mais elle n’a pas démarré. dd ne fonctionne-t-il pas ?
Non ! La raison la plus probable pour laquelle elle n’a pas démarré est que le fichier que dd a copié sur la clé USB n’est pas un fichier bootable. Par exemple, écrire un installateur de CD sur une clé USB ne définira pas les drapeaux appropriés pour le rendre bootable.
Une façon de s’assurer qu’il est bootable est de vérifier ses propriétés via le programme file. Par exemple :
file /Downloads/ubuntu-21.10.iso
À partir de là, vous devez ensuite examiner les propriétés qui sont imprimées dans la sortie standard. Un fichier bootable doit être soit une image disque, soit un fichier ISO hybride.
Crédit d’image : Unsplash