Comment utiliser la commande dd sous Linux [15 exemples utiles]


Brief : Dans ce guide avancé, nous aborderons quelques exemples pratiques de la commande dd. Après avoir suivi ce guide, les utilisateurs avancés pourront travailler confortablement avec les périphériques de bloc à partir de l'interface de ligne de commande.

Sous Linux, clé USB amorçable, et la liste continue.

Certes, nous pouvons utiliser des outils graphiques pour effectuer toutes ces opérations. Cependant, la plupart des administrateurs Linux préfèrent utiliser la commande dd en raison de sa richesse fonctionnelle et de sa robustesse.

Dans ce guide avancé, nous découvrirons la commande dd pour convertir et copier des fichiers. Cependant, contrairement à la commande cp, la plupart du temps, elle est utilisée avec des périphériques de bloc.

Dans ce guide, nous allons d'abord comprendre l'utilisation de la commande dd avec des exemples de base, puis nous discuterons de certains cas d'utilisation avancés.

Alors, commençons.

dd syntaxe de commande

La syntaxe la plus courante de la commande dd est la suivante :

$ dd [if=] [of=]

Dans la syntaxe ci-dessus :

  • if – représente le fichier d'entrée ou source.
  • de – représente le fichier de sortie ou de destination.

1. Comment copier un fichier sous Linux

L'une des utilisations de base de la commande dd consiste à copier un fichier dans un répertoire courant. Comprenons en créant un simple fichier texte :

$ echo "this is a sample text file" > file-1.txt

Maintenant, créons-en une copie à l'aide de la commande dd :

$ dd if=file-1.txt of=file-2.txt

Dans cet exemple, le paramètre if représente le fichier source tandis que le paramètre of représente le fichier de destination.

N'est-ce pas exactement similaire à la commande cp ? Alors qu'y a-t-il de si spécial dans la commande dd ?

La commande dd est beaucoup plus puissante que la commande cp normale. Les dernières sections du didacticiel traitent de certains de ses cas d'utilisation avancés.

2. Comment convertir du texte de minuscules en majuscules

La commande dd nous permet d'effectuer une conversion de casse. Pour ce faire, nous pouvons utiliser le paramètre conv avec.

Pour comprendre cela, affichez d'abord le contenu du fichier file-1.txt :

$ cat file-1.txt

this is a sample text file

Convertissons maintenant le contenu du fichier en majuscules à l'aide de la commande suivante :

$ dd if=file-1.txt of=upper-case.txt conv=ucase

Dans cet exemple, l'option conv=ucase est utilisée pour convertir les lettres minuscules en lettres majuscules.

Enfin, vérifiez le contenu du fichier nouvellement créé :

$ cat upper-case.txt

THIS IS A SAMPLE TEXT FILE

3. Comment convertir du texte de majuscule en minuscule

De la même manière, nous pouvons utiliser la commande dd pour convertir les lettres majuscules en lettres minuscules :

Utilisons l'option conv=lcase pour convertir les lettres majuscules en minuscules :

$ dd if=upper-case.txt of=lower-case.txt conv=lcase

Maintenant, affichons le contenu du fichier nouvellement créé et vérifions que la conversion a été effectuée correctement :

$ cat lower-case.txt

this is a sample text file

4. Évitez d'écraser le fichier de destination sous Linux

Par défaut, la commande dd remplace le fichier de destination, ce qui signifie qu'elle écrasera le fichier s'il existe à la destination avec le même nom.

Cependant, nous pouvons désactiver ce comportement par défaut en utilisant l'option conv=excl comme indiqué.

$ dd if=file-1.txt of=file-2.txt conv=excl

dd: failed to open ‘file-2.txt’ File exists

Ici, nous pouvons voir que la commande dd a interrompu les opérations car le fichier portant le même nom est présent à la destination.

5. Ajouter des données dans un fichier à l'aide de la commande dd

Parfois, nous souhaitons mettre à jour le fichier en mode ajout, ce qui signifie que le nouveau contenu doit être ajouté à la fin du fichier de destination.

Nous pouvons y parvenir en combinant les deux drapeaux - oflag=append et conv=notrunc. Ici, le oflag représente le drapeau de sortie tandis que l'option notrunc est utilisée pour désactiver la troncature à la destination.

Pour comprendre cela, commençons par créer un nouveau fichier texte :

$ echo "append example demo" > dest.txt

Ajoutons ensuite le contenu au fichier dest.txt à l'aide de la commande suivante :

$ dd if=file-1.txt of=dest.txt oflag=append conv=notrunc

Vérifions maintenant le contenu du fichier dest.txt :

$ cat dest.txt 

append example demo
this is a sample text file

6. Sauter des octets ou des caractères lors de la lecture du fichier d'entrée

Nous pouvons demander à la commande dd d'ignorer les premiers caractères lors de la lecture du fichier d'entrée à l'aide des options ibs et skip.

Tout d'abord, affichons le contenu du fichier file-1.txt :

$ cat file-1.txt

this is a sample text file

Ensuite, sautons les 8 premiers caractères en utilisant la commande suivante :

$ dd if=file-1.txt of=file-2.txt ibs=8 skip=1

Vérifions maintenant le contenu du fichier file-2.txt :

$ cat file-2.txt

a sample text file

Dans la sortie ci-dessus, nous pouvons voir que la commande a ignoré les 8 premiers caractères.

7. Sauvegarder la partition de disque Linux à l'aide de la commande dd

Jusqu'à présent, nous avons discuté des exemples de base de la commande dd qui ne nécessite pas d'accès root. Voyons maintenant quelques cas d'utilisation avancés.

Tout comme les fichiers, nous pouvons effectuer la sauvegarde de la partition de disque à l'aide de la commande dd. Par exemple, la commande ci-dessous effectue une sauvegarde de la partition /dev/sda1 vers partition-bkp.img :

$ sudo dd if=/dev/sda1 of=partition-bkp.img

8. Restaurer la partition de disque Linux à l'aide de la commande dd

Dans l'exemple précédent, nous avons sauvegardé la partition /dev/sda1 dans le fichier partition-bkp.img.

Maintenant, restaurez-le sur la partition /dev/sdb1 en utilisant la commande suivante :

$ sudo dd if=partition-bkp.img of=/dev/sdb1

Il est important de noter que la taille de la partition de destination doit être égale ou supérieure à la taille de la sauvegarde.

9. Sauvegarder l'intégralité du disque dur Linux à l'aide de la commande dd

Le lecteur de disque peut avoir plusieurs partitions. Ainsi, effectuer et restaurer une sauvegarde par partition peut prendre du temps à mesure que le nombre de partitions augmente. Pour surmonter cette limitation, nous pouvons sauvegarder l'intégralité du lecteur de disque, tout comme les partitions.

Prenons donc la sauvegarde du disque /dev/sda en utilisant la commande suivante :

$ sudo dd if=/dev/sda of=disk-bkp.img

La commande ci-dessus reprend l'intégralité du disque, y compris ses partitions.

10. Restaurer le disque dur Linux à l'aide de la commande dd

Tout comme les partitions, nous pouvons restaurer la sauvegarde de l'intégralité du disque. Dans l'exemple précédent, nous avons sauvegardé l'intégralité du disque dans le fichier disk-bkp.img. Maintenant, utilisons le même pour le restaurer sur le disque /dev/sdb.

Tout d'abord, supprimons toutes les partitions du disque /dev/sdb et vérifions que toutes les partitions ont été supprimées :

$ lsblk /dev/sdb

Ensuite, restaurez la sauvegarde sur le lecteur /dev/sdb à l'aide de la commande suivante :

$ sudo dd if=disk-bkp.img of=/dev/sdb

Enfin, vérifiez que la partition a bien été créée sur le disque /dev/sdb :

$ lsblk /dev/sdb

11. Sauvegarder l'enregistrement de démarrage principal à l'aide de la commande dd

Le Master Boot Record (MBR) est situé dans le premier secteur du disque de démarrage. Il stocke des informations sur les partitions de disque. Nous pouvons utiliser la commande dd comme indiqué ci-dessous pour en reprendre :

$ sudo dd if=/dev/sda of=mbr.img bs=512 count=1

La commande ci-dessus reprend les 512 premiers octets, c'est-à-dire un secteur.

Il est important de noter que la commande ci-dessus doit être exécutée sur le disque de démarrage.

12. Restaurer l'enregistrement de démarrage principal à l'aide de la commande dd

Dans l'exemple précédent, nous avons sauvegardé le Master Boot Record (MBR). Maintenant, restaurez-le sur le disque /dev/sdb en utilisant la commande suivante :

$ sudo dd if=mbr.img of=/dev/sdb

13. Copier le contenu du lecteur de CD/DVD à l'aide de la commande dd

Semblable aux partitions et aux disques, nous pouvons utiliser la commande dd pour copier le contenu du lecteur de CD ou de DVD. Utilisons donc la commande ci-dessous pour faire la même chose :

$ sudo dd if=/dev/cdrom of=alma-minimal.iso

Sous Linux, le lecteur de CD/DVD est représenté par le périphérique /dev/cdrom. Par conséquent, nous l'utilisons comme fichier source.

Maintenant, vérifions que le contenu a été copié avec succès en vérifiant sa commande checksum :

$ sha256sum alma-minimal.is

14. Créer une clé USB amorçable à l'aide de la commande dd

Dans l'exemple précédent, nous avons créé une image iso d'Alma Linux. Utilisons-le maintenant pour créer une clé USB amorçable :

$ sudo dd if=alma-minimal.iso of=/dev/sdb

Il est important de noter que la commande ci-dessus doit être exécutée avec la bonne clé USB.

15. Comment afficher la barre de progression

Par défaut, la commande dd n'affiche pas la progression lors de l'opération de copie. Cependant, nous pouvons remplacer ce comportement par défaut en utilisant l'option status.

Utilisons donc l'option status=progress avec la commande dd pour afficher la barre de progression :

$ sudo dd if=alma-minimal.iso of=/dev/sdb status=progress
Conclusion

Dans cet article, nous avons présenté quelques exemples pratiques de la commande dd. Les utilisateurs avancés peuvent se référer à ces exemples dans la vie de tous les jours lorsqu'ils travaillent avec des systèmes Linux. Cependant, nous devons être très prudents lors de l'exécution de ces commandes. Parce qu'une petite erreur peut écraser le contenu de tout le disque.

Connaissez-vous un autre meilleur exemple de la commande dd sous Linux ? Faites-nous part de vos opinions dans les commentaires ci-dessous.