dd (data dump) est une commande Linux qui permet de copier des partitions de disques.
On peut donc l’utiliser dans le cadre de clone de disque ou encore pour effectuer des copies de disque ou de partition de disque.
Enfin on peut aussi spécifier un fichier en sortie afin de créer une image de disque.
dd peut être utilisé pour des tâches telles que la sauvegarde du secteur de démarrage d’un disque dur et l’obtention d’une quantité fixe de données aléatoires.
Le programme dd peut également effectuer des conversions sur les données au fur et à mesure de leur copie, y compris la permutation de l’ordre des octets et la conversion vers et depuis les codages de texte ASCII et EBCDIC.
Voici comment utiliser dd pour cloner ou sauvegarder, copier des partition de disque.

Table des matières
dd sur Linux : clone, sauvegarde et copie de partition de disque
Voici l’utilisation basique de dd :
dd if=<source> of=<cible>
On utilise donc une source et une cible pour spécifier l’ordre de la copie.
La source et la destination peuvent être un disque dur, une partition de disque un DVD-Rom mais aussi un fichier.
- Dans le cas d’un disque, ce sera donc : /dev/sda, /dev/sdb
- Avec une partition de disque : /dev/sda1, /dev/sda2, /dev/sdb1
Suivre alors cet article :
Cloner un disque, SSD
Cloner un disque dur revient à copier le contenu de ce dernier d’un disque ou SSD source vers un disque de destination.
Avec dd, c’est extrêmement simple.
Pour cloner le disque /dev/sda vers le disque /dev/sdb, on l’utilise comme ceci :
dd if=/dev/sda of =/dev/sdb
Il existe un article complet pour cloner un disque ou SSD sur Linux avec dd :
Créer une image de disque
On peut ensuite créer une image de disque.
Cela consiste à copier l’intégralité d’un disque ou d’une partition de disque vers un fichier.
On peut ensuite restaurer le contenu des données vers un autre disque.
Par exemple pour copier tout le contenu du disque /dev/sda vers le fichier partition.img :
dd if=/dev/sda of=~/partition.img
Bien sûr, on peut très bien ne sauvegarder qu’une partition de disque.
Il suffit de spécifier son numéro :
dd if=/dev/sda1 of=~/partition.img
Enfin pour restaurer l’image et sauvegarde de disque à partir du fichier vers /dev/sdb :
dd if=~/partition.img of=/dev/sdb
Par exemple, ci-dessous, on utilise dd pour copier la partition EFI vers un fichier. Cela permet d’effectuer une sauvegarde de la partition avant modification.
On voit que le fichier .img est alors reconnu comme tel par la commande file.
Là aussi, un article existe :
Créer un fichier ISO avec dd
De la même manière, on peut créer un fichier ISO d’un DVD-Rom, CD-Rom avec dd.
C’est exactement le même principe avec en source le disque amovible et en destination le fichier iso.
ddif=/dev/cdrom of=~/
-image
cdrom.iso
bs=2048 conv=notrunc
Vider le contenu d’un disque
Vous souhaite vendre votre PC et pour cela vider le contenu entier.
Cela est aussi possible avec dd.
Ainsi pour remplacer tous les secteurs d’un disque ou partition par des zéro :
dd if=/dev/zero of=/dev/sda
Ou encore, on peut aussi écrire des données aléatoires dans le disque :
dd if=/dev/urandom of=/dev/sda
Enfin on peut alors créer une boucle afin d’effectuer plusieurs passage pour s’assurer que la récupération de données est impossible.
Par exemple pour 5 passages consécutifs :
for passage in `seq 5`; do dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc; done
Paramètres de la commande dd
Comme toutes commandes Linux, dd propose plusieurs options et paramètres.
Pour afficher la liste des commandes :
dd --help
Les plus importantes :
- bs=OCTETS lire et écrire jusqu’à OCTETS octets à la fois (défaut: 512);
- neutralise ibs et obs
- cbs=OCTETS convertir OCTETS octets à la fois
- conv=CONVS convertir le fichier selon la liste des symboles séparés par des virgules
- count=N ne copier que N blocs d’entrée
- ibs=OCTETS lire jusqu’à OCTETS octets à la fois (512 par défaut)
- if=FICHIER lire FICHIER au lieu de l’entrée standard (stdin)
- iflag=ATTRS lire selon la liste de symboles séparés par des virgules
- obs=OCTETS écrire OCTETS octets à la fois (512 par défaut)
- of=FICHIER écrire dans FICHIER au lieu de la sortie standard (stdout)
- oflag=ATTRS écrire selon la liste de symboles séparés par des virgules
- seek=N se déplacer de N blocs de taille « obs » au début de la sortie
- skip=N ignorer N blocs de taille « ibs » au début de l’entrée
- status=QUELS les renseignements à afficher sur la sortie d’erreur standard :
- « none » supprimer tout sauf les messages d’erreurs,
- « noxfer » supprimer les statistiques de transfert final
- « progress » montrer les statistiques de transfert périodique
conv
Le paramètre conv propose beaucoup d’options dont voici la liste :
- ascii de l’EBCDIC vers l’ASCII
- ebcdic de l’ASCII vers l’EBCDIC
- ibm de l’ASCII vers l’EBCDIC alternatif
- block remplir les enregistrements terminés par une nouvelle ligne par des espaces jusqu’à la taille « cbs »
- unblock remplacer les espaces en fin d’enregistrements de taille « cbs » par une nouvelle ligne
- lcase transformer les majuscules en minuscules
- ucase transformer les minuscules en majuscules
- sparse essayer de chercher plutôt qu’écrire la sortie pour les blocs
- d’entrée NUL
- swab inverser chaque paire d’octets en entrée
- sync remplir chaque bloc lu par des NUL jusqu’à la taille « ibs » ; avec
- « block » ou « unblock », remplir avec des espaces au lieu de NULL
- excl échouer si le fichier de sortie existe déjà
- nocreat ne pas créer le fichier de sortie
- notrunc ne pas tronquer le fichier de sortie
- noerror continuer même après des erreurs de lecture
- fdatasync écrire physiquement les données en sortie avant la fin
- fsync identique, mais écrire aussi les métadonnées
dd prendre d’autres paramètres comme :
Pour copier, disque dur sur disque dur à l’aide de la commande dd donnée ci-dessous, l’option sync vous permet de tout copier à l’aide d’E / S synchronisées.
Enfin noerror permet de continuer en cas d’erreur lors de la copie par dd.
dd if = /dev/sda of = /dev/sdb conv=noerror,sync
Enfin on peut utiliser status=progress
pour afficher la progression avec de la vitesse de transfert et de copies.
bs – block size
bs (pour block size) indiquen à dd combien de secteurs doivent être copiés à la fois, que ce soit pour l’entrée, la sortie ou les deux.
Par défaut, la plupart des versions de dd utilisent une taille de bloc de 512 octets à la fois pour l’entrée et la sortie.
Ce paramètre influe sur la vitesse de copie des données.
Avant 1999 lorsque la plupart des disques durs avaient une taille de secteur de 512 octets, mais ces dernières années, la plupart des disques durs ont un taille de secteur d’au moins 4 Ko (4 096 octets).
Ce changement peut sembler insignifiant, mais peut conduire à d’énormes inefficacités lorsqu’il est combiné au fait que de nos jours, de nombreux disques durs grand public ont plus d’un téraoctet de capacité.
Lorsque vous traitez avec un téraoctet ou plus de données, vous voulez vraiment vous assurer de choisir une taille de bloc optimale.
Quelle est la meilleur valeur de bs ?
Pour de meilleurs performances, il faut régler la valeur bs sur la taille du cache disque.
Pour l’obtenir :
sudo hdparm -i /dev/sda
Mais on peut aussi utiliser ce script pour calculer la meilleure valeur de bs.
Ce dernier affiche le débit pour différentes valeurs bs de dd.
On multiple facilement le débit par 1000 avec une bonne valeur de bs.
Enfin on indique la taille du bloc dans dd de cette manière :
- bs=4k pour un bloc de 4 ko
- bs=1M pour un block de 1 Mo
Par exemple :
dd if = /dev/sda of = /dev/sdb conv=noerror,sync bs=4G
Liens
- Comment créer une image système avec Linux
- GParted : redimensionner (agrandir/réduire) une partition de disque
- Comment retrouver/récupérer un fichier supprimé sur Linux
- Photorec : récupérer des fichiers supprimés sur Linux
- ddrescue : Comment récupérer les données d’un disque endommagé
- DiskGenius : vérifier et réparer les secteurs défectueux sur Windows 10
- chkdsk : réparer les erreurs de disque/lecteur sur Windows
- Formatage de disque, formatage rapide, formatage bas niveau
- BSOD : Vérifier les pilotes de Windows 10
- DiskPart : créer, supprimer des partitions de disque