Files
abonnel-www/72d39afd-c4cb-4f11-8b21-8a8f9a462e1c/draft_overlay.md
T
2026-05-16 19:13:01 +02:00

3.4 KiB

dd

dd permet de copier et convertir des données au niveau bloc, sans passer par la sémantique d'un système de fichiers.

Le nom officiel signifie Dataset Definition (héritage d'IBM/JCL), mais sa réputation lui a valu les surnoms ironiques de Data Destroyer ou Disk Destroyer : une faute de frappe sur of= peut écraser un disque entier sans confirmation.

dd permet de manipuler des zones qui n'appartiennent pas à un système de fichiers : secteur d'amorçage (MBR), tables de partition, espace libre contenant des traces de fichiers effacés, etc. L'un de ses usages principaux est donc la création d'une copie exacte (bit à bit) d'une partition ou d'un disque.

Astuce : pour les copies longues sur supports défectueux, préférez ddrescue, qui reprend la copie après une erreur de lecture au lieu d'abandonner.

Exemples d'utilisation

Créer une clé USB bootable

Pour écrire une image ISO sur une clé USB.

On considère :

  • /dev/sdX : la clé USB non montée
  • debian.iso : l'image ISO présente dans le dossier courant
# dd if=debian.iso of=/dev/sdX bs=1M; sync

Réaliser une image d'un DVD

Créer une image ISO de sauvegarde d'un CD ou d'un DVD :

On considère :

  • /dev/cdrom : le chemin d'accès au lecteur
  • debian.iso : le nom de l'image générée
$ dd if=/dev/cdrom of=debian.iso

Découper un fichier

Pour découper un fichier en tranches de 100 Mio (avec dd, K = 1024 octets, donc bs=10K count=10K = 100 Mio par tranche).

On considère :

  • grosfichier : le fichier à découper
  • grosfichier-partN : les fragments successifs
$ dd bs=10K count=10K          if=grosfichier of=grosfichier-part1
$ dd bs=10K count=10K skip=10K if=grosfichier of=grosfichier-part2
$ dd bs=10K count=10K skip=20K if=grosfichier of=grosfichier-part3
$ dd bs=10K count=10K skip=30K if=grosfichier of=grosfichier-part4

En pratique, la commande split est mieux adaptée à ce cas d'usage.

Copier la table MBR

Pour sauvegarder le MBR (et la table des partitions primaires) d'un disque.

On considère :

  • /dev/sda : le disque source
  • full-mbr.bin : le fichier de sauvegarde
$ dd if=/dev/sda of=full-mbr.bin bs=512 count=1

Effacer un disque avec des zéros

Pour écraser toutes les données d'un disque en le remplissant de zéros :

$ dd if=/dev/zero of=/dev/sda

Pour un effacement sécurisé, préférez shred (plusieurs passes avec données aléatoires) ou blkdiscard sur SSD.

Tester le débit d'un disque

dd permet une mesure rapide des performances séquentielles en écriture.

Pour isoler la performance d'écriture, on utilise /dev/zero comme source. Écrire directement sur le périphérique (of=/dev/sda) donnerait la mesure la plus pure, mais détruirait son contenu : on passe donc par un fichier (of=/media/disk_6/testfile), ce qui inclut le coût du système de fichiers — c'est-à-dire les conditions réelles d'utilisation.

L'option oflag=direct contourne le cache du noyau pour mesurer le disque, pas la RAM. Notez qu'avec bs=1G, dd alloue 1 Gio en mémoire ; réduisez la valeur (ex. bs=512M) si la RAM disponible est limitée.

$ dd if=/dev/zero of=/media/disk_6/testfile bs=1G count=1 oflag=direct

Bibliographie