Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
dd [Le 02/03/2019, 23:00]
sangorys [Copier une partition de disque dur sur un autre disque dur]
dd [Le 09/10/2021, 19:09]
spnux [Introduction] enlevé synkron
Ligne 7: Ligne 7:
 =====Introduction===== =====Introduction=====
  
-La commande dd permet de copier tout ou partie d'un disque **   +La commande dd permet de copier tout ou partie d'un disque ​− **[[smartmontools| EN BON ÉTAT]]** − par blocs d'​octets,​ indépendamment de la structure du contenu du disque en fichiers et en répertoires. ​
----- +
-[[smartmontools| EN BON ETAT]]** par blocs d'​octets,​ indépendamment de la structure du contenu du disque en fichiers et en répertoires. ​+
 <note help>​Pour dupliquer un disque, il est préférable d'​utiliser la commande ddrescue ​ ( [[:​ddrescue]] ) qui dispose d'une possibilité de reprise en cas d'​arrêt intempestif.</​note>​ <note help>​Pour dupliquer un disque, il est préférable d'​utiliser la commande ddrescue ​ ( [[:​ddrescue]] ) qui dispose d'une possibilité de reprise en cas d'​arrêt intempestif.</​note>​
  
 Contrairement à la copie avec [[/​tutoriel/​console_commandes_de_base#​cp|la commande cp]] ou la copie avec [[archivage|la commande tar]], la copie avec dd permet de reproduire des zones de disque qui ne font pas partie d'un système de fichier : secteur de démarrage (le MBR), tables de partition, traces laissées sur le disque par des fichiers effacés etc. L'un de ses emplois les plus importants est donc //la création d'une copie de sauvegarde exacte de votre partition système et sa récupération//,​ par l'​entremise d'un //live-CD// ou //​live-DVD//​ en cas de pépin. Contrairement à la copie avec [[/​tutoriel/​console_commandes_de_base#​cp|la commande cp]] ou la copie avec [[archivage|la commande tar]], la copie avec dd permet de reproduire des zones de disque qui ne font pas partie d'un système de fichier : secteur de démarrage (le MBR), tables de partition, traces laissées sur le disque par des fichiers effacés etc. L'un de ses emplois les plus importants est donc //la création d'une copie de sauvegarde exacte de votre partition système et sa récupération//,​ par l'​entremise d'un //live-CD// ou //​live-DVD//​ en cas de pépin.
  
-D'​autres fonctions que la copie au sens strict, un peu «spéciales» ​mais parfois utiles, sont également rendues disponibles grâce à dd, comme vous le verrez dans les sections qui suivent : recherche dans les fichiers effacés, recherche dans la mémoire vive, création de disque virtuel etc... +D'​autres fonctions que la copie au sens strict, un peu « spéciales » mais parfois utiles, sont également rendues disponibles grâce à dd, comme vous le verrez dans les sections qui suivent : recherche dans les fichiers effacés, recherche dans la mémoire vive, création de disque virtuel etc...
  
 <note warning>​Attention,​ la commande //dd// permet de faire beaucoup de choses intéressantes,​ mais elle peut aussi être dangereuse, soyez prudent en l'​utilisant :​ une manœuvre hâtive pourrait rendre votre système inutilisable !</​note>​ <note warning>​Attention,​ la commande //dd// permet de faire beaucoup de choses intéressantes,​ mais elle peut aussi être dangereuse, soyez prudent en l'​utilisant :​ une manœuvre hâtive pourrait rendre votre système inutilisable !</​note>​
Ligne 27: Ligne 24:
 Voir aussi  ​ Voir aussi  ​
   * [[ssh#​copier_des_fichiers_via_ssh|copier avec ssh]]   * [[ssh#​copier_des_fichiers_via_ssh|copier avec ssh]]
-  * Pour la copie de sauvegarde ou de synchronisation,​ on pourra regarder, par exemple, ce que permet un logiciel comme [[Unison]], [[synkron]],​[[rsync]] et son pendant graphique [[grsync]], ou encore [[SuperFlexible]].+  * Pour la copie de sauvegarde ou de synchronisation,​ on pourra regarder, par exemple, ce que permet un logiciel comme [[Unison]], [[rsync]] et son pendant graphique [[grsync]], ou encore [[SuperFlexible]].
   * Lorsque la copie porte sur un gros volume, on peut suivre l'​évolution avec un autre logiciel "​dcfldd if=/​dev/​sd(x) of=/​dev/​sd(x) conv=notrunc,​noerror status=on" ​   * Lorsque la copie porte sur un gros volume, on peut suivre l'​évolution avec un autre logiciel "​dcfldd if=/​dev/​sd(x) of=/​dev/​sd(x) conv=notrunc,​noerror status=on" ​
  
Ligne 38: Ligne 35:
 **source** représente les données à copier, **cible** est l'​endroit où les copier ; ça se comprend : **if** correspond à l'​**i**nput **f**ile et **of** correspond à l'​**o**utput **f**ile. **source** représente les données à copier, **cible** est l'​endroit où les copier ; ça se comprend : **if** correspond à l'​**i**nput **f**ile et **of** correspond à l'​**o**utput **f**ile.
  
-**bs** est habituellement une puissance de 2, supérieure ou égale à 512, représentant un nombre d'​octets (par exemple: 512, 1024, 2048, 4096, 8192, 16384, mais cela peut être tout nombre raisonnable). ​+**bs** ​(**b**lock **s**ize) ​est habituellement une puissance de 2, supérieure ou égale à 512, représentant un nombre d'​octets (par exemple: 512, 1024, 2048, 4096, 8192, 16384, mais cela peut être tout nombre raisonnable). ​
  
 <note warning>​Attention !! Si vous inversez la **source** et la **cible**, vous pouvez perdre beaucoup de données. Cette caractéristique a inspiré le surnom de dd : le Destructeur de Données !!</​note>​ <note warning>​Attention !! Si vous inversez la **source** et la **cible**, vous pouvez perdre beaucoup de données. Cette caractéristique a inspiré le surnom de dd : le Destructeur de Données !!</​note>​
Ligne 52: Ligne 49:
  
 //Un cylindre en mode LBA// = 255 têtes x 63 secteurs par piste = 16065 secteurs = 16065 x 512 octets = 16065b. Le **b** signifie **x512** (512 octets étant la taille d'un secteur). **32130b** représente un bloc de deux cylindres. Lorsque vous utilisez des tailles de blocs représentant des nombres entiers de cylindres, vous n'avez jamais à vous soucier de la copie de la dernière fraction de bloc car les partitions sont toujours faites d'un nombre entier de cylindres. Les partitions ne peuvent pas contenir de cylindres partiels. Un cylindre comprend 8 225 280 octets. //Un cylindre en mode LBA// = 255 têtes x 63 secteurs par piste = 16065 secteurs = 16065 x 512 octets = 16065b. Le **b** signifie **x512** (512 octets étant la taille d'un secteur). **32130b** représente un bloc de deux cylindres. Lorsque vous utilisez des tailles de blocs représentant des nombres entiers de cylindres, vous n'avez jamais à vous soucier de la copie de la dernière fraction de bloc car les partitions sont toujours faites d'un nombre entier de cylindres. Les partitions ne peuvent pas contenir de cylindres partiels. Un cylindre comprend 8 225 280 octets.
- 
  
 <​note>​__**Histoires de têtes et de cylindres...**__ <​note>​__**Histoires de têtes et de cylindres...**__
Ligne 90: Ligne 86:
 dd if=/​dev/​sda2 of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror status=progress dd if=/​dev/​sda2 of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror status=progress
 </​code>​ </​code>​
- 
  
 <note warning> <note warning>
 +  * sda2 et sdb2 sont des partitions : pensez à mettre celles qui correspondent à vos besoins. Faites attention à l'​ordre de **if=** et **of=**. Vous pouvez écrire une partition vierge sur une partition utilisée si vous êtes désordonné.
   * Si sdb2 n'​existe pas, dd commencera au début du disque et le créera   * Si sdb2 n'​existe pas, dd commencera au début du disque et le créera
-  * sda2 et sdb2 sont des partitions. Faites attention à l'​ordre de **if=** et **of=**. Vous pouvez écrire une partition vierge sur une partition utilisée si vous êtes désordonné. 
   * L'​argument noerrror serait **risqué** puisqu'​il ignore les erreurs de lecture   * L'​argument noerrror serait **risqué** puisqu'​il ignore les erreurs de lecture
   * La partition complète va être copiée : la partition de destination aura exactement la même taille et le même [[uuid_et_label|uuid]] qui est censé être unique. Cela peut être source de conflit. Vous pouvez toujours [[uuid_et_label#​modifier_manuellement_l_uuid_d_un_systeme_de_fichiers|modifier cet uuid manuellement]],​ mais prenez garde que vous perdrez alors l'​exactitude de copie.   * La partition complète va être copiée : la partition de destination aura exactement la même taille et le même [[uuid_et_label|uuid]] qui est censé être unique. Cela peut être source de conflit. Vous pouvez toujours [[uuid_et_label#​modifier_manuellement_l_uuid_d_un_systeme_de_fichiers|modifier cet uuid manuellement]],​ mais prenez garde que vous perdrez alors l'​exactitude de copie.
Ligne 100: Ligne 95:
  
 <note tip> <note tip>
-  * Veillez à ce que tous soit attaché après "​conv="​+  * Veillez à ce que tout soit attaché après "​conv="​
   * A priori l'​argument conv=notrunc ne sert à rien : on copie une partition pas un fichier   * A priori l'​argument conv=notrunc ne sert à rien : on copie une partition pas un fichier
 </​note>​ </​note>​
  
  
-Une solution alternative pour voir l'​avancement : ouvrer ​un second terminal et tapez:<​code>​pgrep -l '​^dd$'</​code> ​ qui vous produira une réponse du type "9999 dd". Ce code est le chiffre d'​identification du processus de copie qui vous permet de produire une seconde commande dans le terminal (en root):<​code>​kill -USR1 9999</​code>​ Cette seconde commande peut-être lancée de temps en temps pour patienter.+Une solution alternative pour voir l'​avancement : ouvrez ​un second terminal et tapez:<​code>​pgrep -l '​^dd$'</​code> ​ qui vous produira une réponse du type "9999 dd". Ce code est le chiffre d'​identification du processus de copie qui vous permet de produire une seconde commande dans le terminal (en root):<​code>​kill -USR1 9999</​code>​ Cette seconde commande peut-être lancée de temps en temps pour patienter.
 Alternative en mode root, pour voir la progression toutes les 30 secondes: <​code>​watch -n 30 kill -USR1 9999</​code></​note>​ Alternative en mode root, pour voir la progression toutes les 30 secondes: <​code>​watch -n 30 kill -USR1 9999</​code></​note>​
 Une autre solution est d'​effectuer la commande suivante : <​code>​dd if=/​dev/​source | pv -t -e -r -b | dd of=/​dev/​cible</​code>​ Cela requiert le binaire pv :<​code>​apt-get install pv</​code>​ Une autre solution est d'​effectuer la commande suivante : <​code>​dd if=/​dev/​source | pv -t -e -r -b | dd of=/​dev/​cible</​code>​ Cela requiert le binaire pv :<​code>​apt-get install pv</​code>​
Ligne 127: Ligne 122:
   * Lire ici la procedure: [[http://​korben.info/​realiser-limage-dun-disque-dur-testdisk.html]]   * Lire ici la procedure: [[http://​korben.info/​realiser-limage-dun-disque-dur-testdisk.html]]
   * Utiliser de préférence l'​application ddrescue adaptée aux disques en mauvais état.   * Utiliser de préférence l'​application ddrescue adaptée aux disques en mauvais état.
 +  * Lire [[https://​www.cgsecurity.org/​wiki/​Damaged_Hard_Disk|ici]] la procédure utilisant dd ou ddrescue, proposée par Testdisk [[https://​www.cgsecurity.org/​wiki/​Damaged_Hard_Disk]]
  
 ====Copier un grand disque sur un autre disque plus petit==== ====Copier un grand disque sur un autre disque plus petit====
Ligne 223: Ligne 219:
  
 <​code>​ <​code>​
-dd if=/dev/hdc of=/home/user/moncd.iso bs=2048 conv=notrunc+dd if=/dev/hdc of=/home/${USER}/moncd.iso bs=2048 conv=notrunc
 </​code>​ </​code>​
  
Ligne 232: Ligne 228:
 <​code>​ <​code>​
 mkdir /mnt/moncd mkdir /mnt/moncd
-mount -o loop /home/user/moncd.iso /mnt/moncd+mount -o loop /home/${USER}/moncd.iso /mnt/moncd
 </​code>​ </​code>​
  
Ligne 263: Ligne 259:
 ====Créer une clé USB bootable==== ====Créer une clé USB bootable====
  
-**Note : méthode ​réservé ​aux utilisateurs avancés et concentrés,​ une simple erreur de lettre dans le of=/ peut détruire toutes les données du système sur lequel vous travaillez.+<note warning>Note : méthode ​réservée ​aux utilisateurs avancés et concentrés,​ une simple erreur de lettre dans le of=/ peut détruire toutes les données du système sur lequel vous travaillez.</​note>​
  
  
-Remarquez également que toutes les données présentes sur la clef seront perdues** ​+**Remarquez également que toutes les données présentes sur la clé seront perdues.**
  
 Faites un : Faites un :
Ligne 273: Ligne 269:
 </​code>​ </​code>​
  
-Connectez la clé dans le port USB, pour faites à nouveau un ''​sudo fdisk -l,''​ cela permet de repérer le point de montage de la partition.+Connectez la clé dans le port USB, puis faites à nouveau un ''​sudo fdisk -l'' ​cela permet de repérer le point de montage de la partition.
  
-Note : pour un point de montage du type ''/​dev/​sd**x**1''​ on utilisera ​''​**/​dev/​sdx**''​ dans la commande suivante.+Note : pour un point de montage du type ''/​dev/​sd**x**1''​on utilisera ''​**/​dev/​sdx**''​ dans la commande suivante.
  
-Ensuite ​taper :+Ensuite, tapez :
  
 <​code>​ <​code>​
Ligne 309: Ligne 305:
 Pour ma part je travaille sur plusieurs machines, mais sur celle que j'​utilise le plus j'ai deux disques durs SATA. Ils sont complètement identiques. Avant de faire quelque chose qui pourrait être dangereux, je démarre à partir d'un live-CD et je lance : Pour ma part je travaille sur plusieurs machines, mais sur celle que j'​utilise le plus j'ai deux disques durs SATA. Ils sont complètement identiques. Avant de faire quelque chose qui pourrait être dangereux, je démarre à partir d'un live-CD et je lance :
 <​code>​ <​code>​
-dd   ​if=/​dev/​sda ​   of=/dev/sdb ​bs=4096 ​ conv=notrunc,​noerror+dd   ​if=/​dev/​sda ​   of=/​dev/​sdb ​ bs=4096 ​ conv=notrunc,​noerror
 </​code>​ </​code>​
 et je copie ainsi mon lecteur système de travail courant sur le lecteur sdb. Si je casse mon installation sur sda,  je démarre avec le live CD et je fais : et je copie ainsi mon lecteur système de travail courant sur le lecteur sdb. Si je casse mon installation sur sda,  je démarre avec le live CD et je fais :
Ligne 343: Ligne 339:
 Ceci est très utile pour rendre le lecteur presque comme neuf, cela permet de le débarrasser des virus, des chevaux de Troie etc... La plupart des lecteurs ont **0x0000ffh** écrit en usine dans chaque secteur. Ceci est très utile pour rendre le lecteur presque comme neuf, cela permet de le débarrasser des virus, des chevaux de Troie etc... La plupart des lecteurs ont **0x0000ffh** écrit en usine dans chaque secteur.
  
-====Ecrire ​par dessus toute la place libre d'une partition====+====Écrire ​par dessus toute la place libre d'une partition====
  
 C'est à dire rendre impossible la récupération des fichiers effacés. ​ C'est à dire rendre impossible la récupération des fichiers effacés. ​
Ligne 354: Ligne 350:
  
 <​code>​ <​code>​
-rm+rm fichieroccupanttoutlespacelibre
 </​code>​ </​code>​
  
Ligne 452: Ligne 448:
 /dev/random génère autant de bits aléatoires que la réserve entropique peut en contenir. Cela produit des valeurs hautement aléatoires pour des clés de cryptographie. Si davantage d'​octets aléatoires sont nécessaires,​ le processus s'​arrête jusqu'​à ce que la réserve entropique soit remplie de nouveau (bouger la souris aide). /​dev/​urandom n'a pas cette restriction. Si l'​utilisateur exige plus de bits que de présents à ce moment dans la réserve entropique, ils sont produits en utilisant un générateur de nombres pseudo-aléatoires. /dev/random génère autant de bits aléatoires que la réserve entropique peut en contenir. Cela produit des valeurs hautement aléatoires pour des clés de cryptographie. Si davantage d'​octets aléatoires sont nécessaires,​ le processus s'​arrête jusqu'​à ce que la réserve entropique soit remplie de nouveau (bouger la souris aide). /​dev/​urandom n'a pas cette restriction. Si l'​utilisateur exige plus de bits que de présents à ce moment dans la réserve entropique, ils sont produits en utilisant un générateur de nombres pseudo-aléatoires.
  
-====Ecrire ​des données aléatoires par dessus un fichier avant de l'​effacer====+====Écrire ​des données aléatoires par dessus un fichier avant de l'​effacer====
  
 d'​abord,​ faire : d'​abord,​ faire :
Ligne 510: Ligne 506:
  
 Pour bzip2 (plus lent, plus petit), remplacer par bzip2 et bunzip2 Pour bzip2 (plus lent, plus petit), remplacer par bzip2 et bunzip2
- 
  
 ==== Restaurer une partition de disque depuis un fichier image==== ==== Restaurer une partition de disque depuis un fichier image====
Ligne 517: Ligne 512:
 dd if=/​home/​user/​partition.image of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror dd if=/​home/​user/​partition.image of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror
 </​code>​ </​code>​
- 
- 
- 
  
 De cette façon, vous pouvez avoir un grand disque dur et le partitionner,​ ainsi vous pouvez sauvegarder votre partition root. Si vous  De cette façon, vous pouvez avoir un grand disque dur et le partitionner,​ ainsi vous pouvez sauvegarder votre partition root. Si vous 
Ligne 882: Ligne 874:
 fdisk -l /dev/sdX > geometry.txt fdisk -l /dev/sdX > geometry.txt
 </​code>​ </​code>​
-=====Pour aller plus loin===== 
-====Récupérer des secteurs défectueux==== 
- 
-Il existe une variante de dd pour récupérer des données sur un média défectueux,​ tel qu'un disque dur avec des mauvais secteurs. Il est appelé dd_rescue. Il est disponible ici : http://​www.garloff.de/​kurt/​linux/​ddrescue/​ 
- 
-<note tip>Nota Bene : Il existe aussi des paquets dans les dépôts à utiliser avec précaution (voir [[:​ddrescue#​installation_de_ddrescue|cet article]]).</​note>​ 
- 
-L'​implémentation de dd pour le département de la défense est appelée dcfldd, et possède quelques caractéristiques comme une barre de progression,​ ainsi vous pouvez planifier vos pauses café : http://​dcfldd.sourceforge.net/​ 
- 
-====Sdd==== 
- 
-Sdd est utile quand la taille des blocs d'​entrée est différente de celle des blocs de sortie, et réussira dans des cas où dd échoue. 
- 
-http://​linux.maruhn.com/​sec/​sdd.html 
- 
-====Un des meilleurs liens sur dd==== 
- 
-http://​www.softpanorama.org/​Tools/​dd.shtml 
  
 ===== Pour plus de détails techniques ===== ===== Pour plus de détails techniques =====
Ligne 1031: Ligne 1005:
 dcfldd est 100% compatible avec dd, mais supporte quelques commandes supplémentaires et affiche par défaut la progression de l'​opération en cours. dcfldd est 100% compatible avec dd, mais supporte quelques commandes supplémentaires et affiche par défaut la progression de l'​opération en cours.
  
 +En cas d'​oubli au départ, on peut également afficher l'​état d'​avancement de la commande **dd** en tapant **Ctrl+t** à tout moment au cours de son éxecution. \\
 +Ce qui nous affiche
 +<​code>​load:​ 1.74  cmd: dd 1645 uninterruptible 0.03u 8.25s
 +149+0 records in
 +148+0 records out
 +620756992 bytes transferred in 704.620913 secs (880980 bytes/sec)
 +</​code>​
  
 ===== Comparatif de vitesse dd/pv vs dcfldd vs dc3dd ===== ===== Comparatif de vitesse dd/pv vs dcfldd vs dc3dd =====
Ligne 1088: Ligne 1069:
 https://​launchpad.net/​gdiskdump https://​launchpad.net/​gdiskdump
  
 +FIXME  Gdiskdump n'est plus mis à jour depuis 2011 et ne se lance pas, surtout si la configuration comporte GPT et MBR ensemble.
  
 +=====Pour aller plus loin=====
 +====Récupérer des secteurs défectueux====
  
 +Il existe une variante de dd pour récupérer des données sur un média défectueux,​ tel qu'un disque dur avec des mauvais secteurs. Il est appelé dd_rescue. Il est disponible ici : http://​www.garloff.de/​kurt/​linux/​ddrescue/​
 +
 +<note tip>Nota Bene : Il existe aussi des paquets dans les dépôts à utiliser avec précaution (voir [[:​ddrescue#​installation_de_ddrescue|cet article]]).</​note>​
 +
 +L'​implémentation de dd pour le département de la défense est appelée dcfldd, et possède quelques caractéristiques comme une barre de progression,​ ainsi vous pouvez planifier vos pauses café : http://​dcfldd.sourceforge.net/​
 +
 +====Sdd====
 +
 +Sdd est utile quand la taille des blocs d'​entrée est différente de celle des blocs de sortie, et réussira dans des cas où dd échoue.
 +
 +http://​linux.maruhn.com/​sec/​sdd.html
 +
 +====Tutoriel sur l'​utilitaire====
 +  * [[https://​wiki.debian-fr.xyz/​La_commande_dd|La commande dd]] **(fr)**
 +  * [[http://​www.softpanorama.org/​Tools/​dd.shtml|DD Command (guide extrêment complet)]] **(en)**
 +  * [[https://​wiki.archlinux.org/​title/​Dd|DD (documentation Arch Linux)]] **(en)**
  
-FIXME  Gdiskdump n'est plus mis à jour depuis 2011 et ne se lance pas, surtout si la configuration comporte GPT et MBR ensemble. 
 ---- ----
 source : http://​wiki.mandriva.com/​fr/​Copie_par_blocs_d%27octets_avec_dd source : http://​wiki.mandriva.com/​fr/​Copie_par_blocs_d%27octets_avec_dd
  • dd.txt
  • Dernière modification: Le 15/12/2023, 15:50
  • par 41.208.170.106