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
dd [Le 16/04/2018, 09:19]
37.169.122.132 [Disque défectueux bit par bit]
dd [Le 15/12/2023, 15:50] (Version actuelle)
41.208.170.106 [Commande “dd”]
Ligne 3: Ligne 3:
  
 ====== Commande “dd” ====== ====== Commande “dd” ======
-<note warning>​Page en cours de réécriture complète</​note>​+
  
 =====Introduction===== =====Introduction=====
  
-La commande dd permet de copier tout ou partie d'un disque par blocs d'​octets,​ indépendamment de la structure du contenu du disque en fichiers et en répertoires. ​+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.
 <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 23: Ligne 22:
 Une autre page utile sur dd - hélas elle aussi en anglais - est : [[http://​www.softpanorama.org/​Tools/​dd.shtml|Unix dd command]] Une autre page utile sur dd - hélas elle aussi en anglais - est : [[http://​www.softpanorama.org/​Tools/​dd.shtml|Unix dd command]]
  
-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"​
  
 <note tip>Il existe une interface graphique à dd qui permet de créer des clés bootables d'​Ubuntu : [[mkusb]].</​note>​ <note tip>Il existe une interface graphique à dd qui permet de créer des clés bootables d'​Ubuntu : [[mkusb]].</​note>​
Ligne 36: 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 50: 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...**__
  
-Pour bien comprendre les notions originelles de tête, cylindre et secteur, auxquelles l'​auteur fait appel dans le paragraphe précédent,​ vous pourrez ​lire ces deux petites ​pages très éclairantes ​+Pour bien comprendre les notions originelles de tête, cylindre et secteur, auxquelles l'​auteur fait appel dans le paragraphe précédent,​ vous pouvez ​lire cette pages très éclairante ​:
   * [[wpfr>​Disque_dur#​G.C3.A9om.C3.A9trie|Géométrie des disques durs]]   * [[wpfr>​Disque_dur#​G.C3.A9om.C3.A9trie|Géométrie des disques durs]]
-  * http://​www.redhat.com/​docs/​manuals/​enterprise/​RHEL-4-Manual/​fr/​admin-guide/​s1-storage-data-addr.html 
  
 D'​autre part, il faut bien comprendre que les notions de cylindre et de tête sous-jacentes au mode d'​adressage LBA, sont «abstraites;​» et déconnectées de la réalisation matérielle du disque (votre disque n'a sûrement pas 255 têtes réelles...). D'​autre part, il faut bien comprendre que les notions de cylindre et de tête sous-jacentes au mode d'​adressage LBA, sont «abstraites;​» et déconnectées de la réalisation matérielle du disque (votre disque n'a sûrement pas 255 têtes réelles...).
Ligne 83: Ligne 80:
 **bs=4k** indiquera à dd d'​utiliser un bloc de taille 4 kiloctets. J'ai trouvé que **bs=4k** est le plus rapide pour la copie de disques sur une machine moderne. **bs=4k** indiquera à dd d'​utiliser un bloc de taille 4 kiloctets. J'ai trouvé que **bs=4k** est le plus rapide pour la copie de disques sur une machine moderne.
  
-====Copier une partition de disque ​dur sur un autre disque ​dur====+====Copier une partition de disque sur un autre disque====
  
 <​code>​ <​code>​
Ligne 89: Ligne 86:
 </​code>​ </​code>​
  
-Veillez à ce que tous soit attaché après "​conv=",​ +<note warning> 
-sda2 et sdb2 sont des partitions. Vous voulez copier sda2 dans sdb2. Si sdb2 n'​existe pas, dd commencera au début du disque et le créera. ​+  ​* ​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 
 +  * 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 uniqueCela 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. 
 +</​note>​
  
-<​note ​warning>Faites attention ​à l'​ordre de **if=** et **of=**. Vous pouvez écrire un disque vierge sur un disque utilisé si vous êtes désordonné. ​A priori l'​argument conv=notrunc ne sert à rien : on copie une partition pas un fichier… et l'​argument noerrror est **risqué** puisqu'​il ignore les erreurs de lecture</​note>​+<​note ​tip> 
 +  * 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 
 +</​note>​
  
-<note tip>Le fait de copier ainsi une partition implique de copier également son [[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.</​note>​ 
  
-<note tip>Et comment suivre ce qui se passe pendant ​l'exécution de DD... En effet, après avoir lancé la commande, c'est le blackout et vous pouvez attendre longtemps et même penser que rien ne se passe! +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. 
-Alors, ​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. +<note tip> 
-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>​ 
-Pour suivre l'avancement de la commande dd, vous pouvez ajouter l'​option **status=progress**,​ ou 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>​+</​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>​
  
 ====Cloner un disque dur en entier==== ====Cloner un disque dur en entier====
Ligne 117: Ligne 121:
 ====Disque défectueux bit par bit==== ====Disque défectueux bit par bit====
 **Cette copie sera un clone identique** du disque Source. **Cette copie sera un clone identique** du disque Source.
-  * Lire ici la procedure: [[http://​korben.info/​realiser-limage-dun-disque-dur-testdisk.html]]+  * Lire ici la procedure: [[https://​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 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 ==== 
 +<note important>​Il est important de noter que la grande partition ne doit pas contenir plus de données que ne peut en contenir la petite.</​note>​
 La seule différence entre une grande partition et une petite partition, hormis la taille, est la table de partition. Si vous copiez sda vers sdb, un disque entier avec une seule partition, sdb étant plus petit que sda, alors vous devez faire : La seule différence entre une grande partition et une petite partition, hormis la taille, est la table de partition. Si vous copiez sda vers sdb, un disque entier avec une seule partition, sdb étant plus petit que sda, alors vous devez faire :
  
Ligne 128: Ligne 133:
 </​code>​ </​code>​
  
-Une autre technique pour traiter ce genre de situation, est proposée à [[http://​www.linuxquestions.org/​questions/​showthread.php?​t=362506&​page=20| la page 20 du fil en anglais]]. La technique proposée fait usage de commandes du type de resize2fs. ​+Une autre technique pour traiter ce genre de situation, est proposée à [[http://​www.linuxquestions.org/​questions/​showthread.php?​t=362506&​page=20| la page 20 du fil en anglais]]. La technique proposée fait usage de commandes du type de //resize2fs//.
  
 ===Les paramètres skip et seek=== ===Les paramètres skip et seek===
Ligne 148: Ligne 153:
 df -h df -h
 </​code>​ </​code>​
-Cela parce que fdisk lit la table de partitions et df lit l'info de format. ​+Cela parce que fdisk lit la table de partitions et df lit l'info de format.
 </​note>​ </​note>​
  
Ligne 179: Ligne 184:
 Une autre technique fait usage de la commande [[https://​linux.die.net/​man/​8/​resize2fs|resize2fs]]. Cette commande va agrandir le système de fichiers à la taille de la partition : Une autre technique fait usage de la commande [[https://​linux.die.net/​man/​8/​resize2fs|resize2fs]]. Cette commande va agrandir le système de fichiers à la taille de la partition :
  
-1° Ne travailler que sur des partitions démontées ​+1° Ne travailler que sur des partitions démontées
  
-2° Ouvrir une console root (ou travailler depuis un live CD) et taper +2° Ouvrir une console root (ou travailler depuis un live CD) et taper
 <​code>​ <​code>​
 e2fsck -f /dev/xx e2fsck -f /dev/xx
 </​code>​ </​code>​
-où xx est évidemment le nom de la partition concernée, afin de vérifier l'​intégrité du système de fichiers. Pour info, l'​option -f force la vérification,​ sans se contenter d'un simple "​check"​ du journal.  +où xx est évidemment le nom de la partition concernée, afin de vérifier l'​intégrité du système de fichiers. Pour info, l'​option -f force la vérification,​ sans se contenter d'un simple "​check"​ du journal. 
-De toutes façons, si vous ne ne faites pas, la commande suivante vous l'​exigera avant de s'​exécuter. ​+De toutes façons, si vous ne faites pas, la commande suivante vous l'​exigera avant de s'​exécuter.
  
-3° agrandir le système de fichiers : +3° agrandir le système de fichiers :
 <​code>​ <​code>​
 resize2fs /dev/xx resize2fs /dev/xx
Ligne 215: Ligne 220:
  
 <​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 224: Ligne 229:
 <​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 238: Ligne 243:
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
-for n in `seq 7`; do dd if=/​dev/​urandom of=/dev/sdX bs=8b conv=notrunc;​ done+for n in $(seq 7); do dd if=/​dev/​urandom of=/dev/sdX bs=8b conv=notrunc;​ done
 </​code>​ </​code>​
  
Ligne 255: Ligne 260:
 ====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>​
  
  
-Remarquer ​é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 265: Ligne 270:
 </​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>​
-dd bs=4M if=/​chemin/​vers/​ma-distribution.iso of=/dev/sdx && sync+dd bs=4M if=/​chemin/​vers/​ma-distribution.iso of=/​dev/​sdx ​status=progress ​&& sync
 </​code>​ </​code>​
  
 [[https://​wiki.archlinux.org/​index.php/​USB_Installation_Media#​Using_dd|Source de cette section]] [[https://​wiki.archlinux.org/​index.php/​USB_Installation_Media#​Using_dd|Source de cette section]]
 +==== Créer un DVD bootable ====
 +exemple
 +<​code>​dd if=/​home/​$USER/​Téléchargements/​lubuntu-18.04.1-desktop-i386.iso of=/​dev/​sr0 ​ status=progress && sync
 +1089364480 bytes (1,1 GB, 1,0 GiB) copied, 2420 s, 450 kB/s 
 +2127840+0 enregistrements lus
 +2127840+0 enregistrements écrits
 +1089454080 bytes (1,1 GB, 1,0 GiB) copied, 2419,85 s, 450 kB/s
 +</​code>​
 +
 +
 +
 ====Copier seulement le MBR d'un disque dur==== ====Copier seulement le MBR d'un disque dur====
  
Ligne 290: Ligne 306:
 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 301: Ligne 317:
 ==== Faire de multiples copie d'un support grâce à un fichier Master-image compressé ==== ==== Faire de multiples copie d'un support grâce à un fichier Master-image compressé ====
  
-On génère d'​abord le Master-image de notre support de stockage au format compressé gzip,  +On génère d'​abord le Master-image de notre support de stockage au format compressé gzip. Cette méthode maintient le MBRles Flag... 
-<​code>​ +=== En ligne de commande === 
-  sudo dcfldd if=/dev/sdX bs=4k  conv=notrunc,​noerror | gzip -c > ~/​master-image.gzip ​  +Sauvegarde 
-</​code>​+<code bash>​sudo dd if=/dev/sdX bs=1M conv=notrunc,​noerror status=progress | gzip -c > ~/​master-image.gzip</​code> 
 +Déploiement sur un support de stockage au moins aussi GRAND. 
 +<code bash>​gzip -cd ~/​master-image.gzip | sudo dd of=/dev/sdX bs=1M status=progress conv=notrunc,​noerror</​code>​ 
 +=== Avec une application === 
 +<code bash>​sudo apt install dcfldd</​code>​ 
 +<code bash>sudo dcfldd if=/dev/sdX bs=4k  conv=notrunc,​noerror | gzip -c > ~/​master-image.gzip  ​</​code>​ 
 +On déploie le fichier Master-image sur un support de stockage PLUS GRAND. 
 +<code bash> gzip -cd ~/​master-image.gzip | sudo dcfldd of=/dev/sdX bs=4k  conv=notrunc,​noerror  ​</code
 +<note tip>​Cette méthode ne convient pas si le disque dispose d'une table de partition GPT car le double de la table va être mal positionné ​ si le disque recepteur n'a pas une taille identique.</​note>
  
-On déploie le fichier Master-image sur un support de stockage PLUS GRAND 
-<​code>​ 
-  gzip -cd ~/​master-image.gzip | sudo dcfldd of=/dev/sdX bs=4k  conv=notrunc,​noerror  ​ 
-</​code>​ 
-Cette méthode maintient le MBR, les Flag... 
  
  
 ====Effacer toutes les données d'un disque dur==== ====Effacer toutes les données d'un disque dur====
  
-Vous devrez booter depuis un CD pour cela, +Vous devrez booter depuis un CD pour cela,
 http://​www.e-fense.com/​helix est un bon CD de boot (mais il y en a bien d'​autres !). L'​environnement de boot helix contient la version DoD de dd appelée dcfldd. Elle fonctionne de la même manière que dd, mais possède une barre de progression. http://​www.e-fense.com/​helix est un bon CD de boot (mais il y en a bien d'​autres !). L'​environnement de boot helix contient la version DoD de dd appelée dcfldd. Elle fonctionne de la même manière que dd, mais possède une barre de progression.
  
Ligne 324: Ligne 343:
 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.
  
 <​code>​ <​code>​
Ligne 335: Ligne 354:
  
 <​code>​ <​code>​
-rm+rm fichieroccupanttoutlespacelibre
 </​code>​ </​code>​
  
Ligne 378: Ligne 397:
 </​code>​ </​code>​
  
-====Etat de la mémoire====+====État de la mémoire====
  
 <​code>​ <​code>​
Ligne 401: Ligne 420:
 </​code>​ </​code>​
  
-et je retrouve chaque chose exactement comme avant qu'un truc idiot que j'​essayais de faire ne fonctionne pas. Vous pouvez vraiment, vraiment apprendre Linux de cette manière, car vous ne pouvez absolument pas casser ce dont vous avez une copie exacte. ​  ​+et je retrouve chaque chose exactement comme avant qu'un truc idiot que j'​essayais de faire ne fonctionne pas. Vous pouvez vraiment, vraiment apprendre Linux de cette manière, car vous ne pouvez absolument pas casser ce dont vous avez une copie exacte.
 Vous pourriez aussi envisager de faire une partition root séparée de /home, et rendre /home assez grand pour contenir la partition root, Vous pouvez alors faire : Vous pourriez aussi envisager de faire une partition root séparée de /home, et rendre /home assez grand pour contenir la partition root, Vous pouvez alors faire :
  
Ligne 423: Ligne 442:
  
 Ici Ici
-  * **urandom** est un générateur Linux de nombres aléatoires. ​   +  * **urandom** est un générateur Linux de nombres aléatoires.
   * **mes_octets_aleatoires** est un fichier.   * **mes_octets_aleatoires** est un fichier.
-  * La taille de bloc est égale à 1 octet (**bs=1**) ​+  * La taille de bloc est égale à 1 octet (**bs=1**)
   * et on envoie 100 blocs, donc au total 100 octets (**count=100**).   * et on envoie 100 blocs, donc au total 100 octets (**count=100**).
  
Ligne 433: Ligne 452:
 /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 472: Ligne 491:
 </​code>​ </​code>​
  
-Ou si cela ne fonctionne pas, essayez : +Ou si cela ne fonctionne pas, essayez :
  
 <​code>​ <​code>​
Ligne 484: Ligne 503:
 </​code>​ </​code>​
  
-<note tip>Si cela ne fonctionne pas, essayez : +<note tip>Si cela ne fonctionne pas, essayez :
 <​code>​ <​code>​
 zcat partition.image.gz | dd of=/​dev/​sda1 ibs=4096 zcat partition.image.gz | dd of=/​dev/​sda1 ibs=4096
Ligne 491: Ligne 510:
  
 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 499: Ligne 517:
 </​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 +
 semez la pagaille dans votre partition root, vous n'avez qu'à booter depuis le CD helix (ou un live CD quelconque) et restaurer l'​image. semez la pagaille dans votre partition root, vous n'avez qu'à booter depuis le CD helix (ou un live CD quelconque) et restaurer l'​image.
  
Ligne 569: Ligne 584:
 Vous pouvez en fait copier tout périphérique de type bloc ou caractère dans un fichier avec dd. Vous pouvez en fait copier tout périphérique de type bloc ou caractère dans un fichier avec dd.
  
-La capture de la mémoire sur un système rapide, avec **bs=1024** prend environ 60 secondes, un disque dur de 120 Go environ une heure, un CD vers un disque dur environ 10 minutes, une disquette vers un disque dur environ 2 minutes. ​+La capture de la mémoire sur un système rapide, avec **bs=1024** prend environ 60 secondes, un disque dur de 120 Go environ une heure, un CD vers un disque dur environ 10 minutes, une disquette vers un disque dur environ 2 minutes.
  
-Avec dd, les images sur vos disquettes ne changeront pas du tout. Si vous avez une disquette DOS bootable, et que vous la sauvegardez sur votre disque dur sous forme de fichier image, quand vous restaurez cette image sur une autre disquette, elle sera bootable. ​+Avec dd, les images sur vos disquettes ne changeront pas du tout. Si vous avez une disquette DOS bootable, et que vous la sauvegardez sur votre disque dur sous forme de fichier image, quand vous restaurez cette image sur une autre disquette, elle sera bootable.
  
 dd est un excellent outil pour créer une image d'un CD d'​installation de MS Windows. Lorsque vous faites une copie d'un tel CD, il y a un secteur qui possède une taille non standard. C'est le dernier secteur. dd ne remplit pas ce secteur, créant ainsi une copie indistinguable de l'​original. Si vous gravez le CD, avec cdrao, le disque résultant sera une copie absolument exacte de l'​original. dd est un excellent outil pour créer une image d'un CD d'​installation de MS Windows. Lorsque vous faites une copie d'un tel CD, il y a un secteur qui possède une taille non standard. C'est le dernier secteur. dd ne remplit pas ce secteur, créant ainsi une copie indistinguable de l'​original. Si vous gravez le CD, avec cdrao, le disque résultant sera une copie absolument exacte de l'​original.
Ligne 608: Ligne 623:
 Si vous voulez voir  à quoi ressemble un MBR, faites : Si vous voulez voir  à quoi ressemble un MBR, faites :
  
-<​code>​+<​code ​bash>
 sudo dd if=/dev/sda count=1 2>/​dev/​null | hexdump -C sudo dd if=/dev/sda count=1 2>/​dev/​null | hexdump -C
 </​code>​ </​code>​
-("​2>/​dev/​null"​ pour supprimer les messages de dd dans la sortie ​ecran..) +("​2>/​dev/​null"​ pour supprimer les messages de dd dans la sortie ​écran..)
  
-vous montrera le secteur ​1, ou MBR. Le code de l'​amorce et la table des partitions sont dans le MBR. +vous montrera le secteur ​0, ou MBR. Le code de l'​amorce et la table des partitions ​MS_DOS ​sont dans le MBR ou le contenu d'un MBR protecteur si la table de partition est GPT. 
 + 
 +===Lire la description ​ GPT === 
 + Si vous voulez voir  à quoi ressemble une  table de partition[[https://​fr.wikipedia.org/​wiki/​GUID_Partition_Table|GPT]] faites : 
 +<code bash> 
 +sudo dd if=/​dev/​sda ​ skip=1 count=1 2>/​dev/​null | hexdump -C && sudo dd if=/​dev/​sda ​ bs=128 skip=8 count=128 2>/​dev/​null | hexdump -C 
 +</​code>​ 
 +("​2>/​dev/​null"​ pour supprimer les messages de dd dans la sortie écran..) 
 +vous montrera le secteur 1  contenant ​ l'​entête ​ et les 32 autres secteurs contenant la description des 128 partitions.
 ===Lire la fin du disque=== ===Lire la fin du disque===
 Pour voir la fin du disque vous devez connaitre le nombre total de secteurs dans le disque, et le disque doit être configuré avec le Maximum Adressable Sector (le secteur adressable maximum) identique au Maximum Native Address (= MNA, l'​adresse native maximale). Le CD helix possède un utilitaire pour paramétrer cela correctement. Dans la commande dd votre valeur pour skip sera un de moins que la MNA du disque. Pour un disque Seagate SATA de 120 Go : Pour voir la fin du disque vous devez connaitre le nombre total de secteurs dans le disque, et le disque doit être configuré avec le Maximum Adressable Sector (le secteur adressable maximum) identique au Maximum Native Address (= MNA, l'​adresse native maximale). Le CD helix possède un utilitaire pour paramétrer cela correctement. Dans la commande dd votre valeur pour skip sera un de moins que la MNA du disque. Pour un disque Seagate SATA de 120 Go :
Ligne 623: Ligne 646:
 Ainsi cela lit secteur par secteur, et écrit le dernier secteur dans monfichier. Même avec l'​adressage LBA, les disques sont lus «secrètement» en secteurs, cylindres et têtes. Ainsi cela lit secteur par secteur, et écrit le dernier secteur dans monfichier. Même avec l'​adressage LBA, les disques sont lus «secrètement» en secteurs, cylindres et têtes.
  
-Pour un cylindre donné il y a 63 secteurs par tête, et on compte 255 têtes par cylindre. Chaque disque possède un nombre total bien déterminé de cylindres. Le nombre total d'​octets par cylindre s'​obtient donc par la multiplication suivante : +Pour un cylindre donné il y a 63 secteurs par tête, et on compte 255 têtes par cylindre. Chaque disque possède un nombre total bien déterminé de cylindres. Le nombre total d'​octets par cylindre s'​obtient donc par la multiplication suivante :
  
-512x63x255= nombre d'​octets par cylindre. ​+512x63x255= nombre d'​octets par cylindre.
  
-63x255= 16 065=nombre de secteurs par cylindre. ​+63x255= 16 065=nombre de secteurs par cylindre.
  
-512 est la taille en octets d'un secteur. ​+512 est la taille en octets d'un secteur.
  
-Avec 234 441 647 secteurs au total, et 16 065 secteurs par cylindre, vous obtenez 14 593.317584812 cylindres, un nombre qui n'est pas entier, et il y a alors quelques secteurs excédentaires qui ne constituent pas un cylindre entier. Ceci vous laisse avec 5 102 secteurs qui ne peuvent pas être partitionnés car une partition ne comprend que des cylindres entiers. C'est comme avoir une partie de personne, cela ne constitue pas vraiment une personne. ​+Avec 234 441 647 secteurs au total, et 16 065 secteurs par cylindre, vous obtenez 14 593.317584812 cylindres, un nombre qui n'est pas entier, et il y a alors quelques secteurs excédentaires qui ne constituent pas un cylindre entier. Ceci vous laisse avec 5 102 secteurs qui ne peuvent pas être partitionnés car une partition ne comprend que des cylindres entiers. C'est comme avoir une partie de personne, cela ne constitue pas vraiment une personne.
  
-Ainsi, qu'​arrive t-il à ces secteurs ? Ils deviennent des **secteurs en surplus** après la dernière partition. Vous ne pouvez pas en principe les lire avec un système d'​exploitation. Mais dd peut. C'est vraiment une bonne idée de vérifier ce qui peut être écrit dans les secteurs en surplus. Pour notre disque dur Seagate de 120 Go vous soustrayez du nombre total de secteurs (234 441 647) ceux en surplus (5 102) = 234 436 545 secteurs partitionables.+Ainsi, qu'​arrive-t-il à ces secteurs ? Ils deviennent des **secteurs en surplus** après la dernière partition. Vous ne pouvez pas en principe les lire avec un système d'​exploitation. Mais dd peut. C'est vraiment une bonne idée de vérifier ce qui peut être écrit dans les secteurs en surplus. Pour notre disque dur Seagate de 120 Go vous soustrayez du nombre total de secteurs (234 441 647) ceux en surplus (5 102) = 234 436 545 secteurs partitionables.
  
 Pour y voir plus clair sur ces histoires de têtes, cylindres et secteurs, jetez un coup d'oeil plus haut. Pour y voir plus clair sur ces histoires de têtes, cylindres et secteurs, jetez un coup d'oeil plus haut.
Ligne 656: Ligne 679:
 </​code>​ </​code>​
  
-écrira dans **monfichier**,​ les 8 000 secteurs ​ qui suivent les 16 000 premiers secteurs du lecteur. ​+écrira dans **monfichier**,​ les 8 000 secteurs ​ qui suivent les 16 000 premiers secteurs du lecteur.
  
-Ben oui, quoi !!   On saute (**skip**) 4096 * 2000 =  8 192 000 octets, d'​accord ? +Ben oui, quoi !!   On saute (**skip**) 4096 * 2000 =  8 192 000 octets, d'​accord ?
  
 Bon. Comme il y a 512 octets dans un secteur, on a sauté : 8 192 000/512 = 16 000 secteurs !! Bon. Comme il y a 512 octets dans un secteur, on a sauté : 8 192 000/512 = 16 000 secteurs !!
  
-Et ensuite on a envoyé (**count=1000**) 1000 blocs de 4096 octets, soit 4 096 000 octets, ce qui fait finalement ​ 4 096 000/512= 8 000 secteurs, vous voyez qu'on s'y retrouve !!!  +Et ensuite on a envoyé (**count=1000**) 1000 blocs de 4096 octets, soit 4 096 000 octets, ce qui fait finalement ​ 4 096 000/512= 8 000 secteurs, vous voyez qu'on s'y retrouve !!!
  
 Vous pouvez ouvrir ce fichier avec un éditeur hexadécimal,​ en éditer une partie, et recopier cette partie sur le disque : Vous pouvez ouvrir ce fichier avec un éditeur hexadécimal,​ en éditer une partie, et recopier cette partie sur le disque :
Ligne 741: Ligne 764:
 ====Créer une image de la partition d'une autre machine en réseau==== ====Créer une image de la partition d'une autre machine en réseau====
  
-Faire démarrer les deux machines avec le CD helix, juste pour être absolument sûr. +Faire démarrer les deux machines avec le CD helix, juste pour être absolument sûr.
  
 Sur la machine source : Sur la machine source :
Ligne 758: Ligne 781:
  
 Voici comment cette commande fonctionne : la taille du bloc correspond à un cylindre. bs=1065b équivaut à un cylindre sur un disque LBA. La commande dd est tubée vers netcat, qui prend pour arguments : Voici comment cette commande fonctionne : la taille du bloc correspond à un cylindre. bs=1065b équivaut à un cylindre sur un disque LBA. La commande dd est tubée vers netcat, qui prend pour arguments :
-1/ L'​adresse IP de la cible (comme 192.168.0.1 ou toute adresse avec un port ouvert) ​+1/ L'​adresse IP de la cible (comme 192.168.0.1 ou toute adresse avec un port ouvert)
 2/ Le port que vous désirez utiliser (1234). 2/ Le port que vous désirez utiliser (1234).
  
Ligne 774: Ligne 797:
 </​code>​ </​code>​
  
-Cherchera dans toute la partition la chaîne de caractères (__pas d'​accents__) spécifiée entre les guillemets (utilisez éventuellement les options de grep: avec, disons, grep -3 '​chaine'​ vous auriez un peu plus de contexte affiché pour chaque résultat de recherche). Chercher plusieurs fois dans une partition entière peut être fastidieux. Cette commande particulière sur les chaines de caractères imprime le résultat de la recherche sur l'​écran,​ avec l'​offset où il se trouve dans la partition. dd travaille en système décimal. L'​offset des disques travaille en hexadécimal. Disons que vous trouvez la chaine de caractères dans votre partition à l'​offset 0x020d0d90h. Vous convertissez cela en décimal avec l'une des nombreuses calculatrices trouvées sur Linux. Ceci est l'​offset décimal 34409872. Divisé par 512 par secteur, ​+Cherchera dans toute la partition la chaîne de caractères (__pas d'​accents__) spécifiée entre les guillemets (utilisez éventuellement les options de grep: avec, disons, grep -3 '​chaine'​ vous auriez un peu plus de contexte affiché pour chaque résultat de recherche). Chercher plusieurs fois dans une partition entière peut être fastidieux. Cette commande particulière sur les chaines de caractères imprime le résultat de la recherche sur l'​écran,​ avec l'​offset où il se trouve dans la partition. dd travaille en système décimal. L'​offset des disques travaille en hexadécimal. Disons que vous trouvez la chaine de caractères dans votre partition à l'​offset 0x020d0d90h. Vous convertissez cela en décimal avec l'une des nombreuses calculatrices trouvées sur Linux. Ceci est l'​offset décimal 34409872. Divisé par 512 par secteur,
 nous obtenons 67206,​78125. nous obtenons 67206,​78125.
  
Ligne 814: Ligne 837:
 </​code>​ </​code>​
  
-La chaîne de caractères entre guillemets est n'​importe quelle séquence ASCII ou hexadécimale (doit être séparée avec un espace : '55 <​espace>​aa<​espace>​09'​ recherche la chaîne hexadécimale '​55aa09'​). ​+La chaîne de caractères entre guillemets est n'​importe quelle séquence ASCII ou hexadécimale (doit être séparée avec un espace : '55 <​espace>​aa<​espace>​09'​ recherche la chaîne hexadécimale '​55aa09'​).
  
 On peut utiliser pour cette recherche grep les classes de caractères POSIX : On peut utiliser pour cette recherche grep les classes de caractères POSIX :
Ligne 863: Ligne 886:
 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 916: Ligne 921:
 Saute n blocs d'​entrée (en utilisant la taille de bloc d'​entrée spécifiée par bs ou ibs ou la taille par défaut) avant de commencer la copie. Saute n blocs d'​entrée (en utilisant la taille de bloc d'​entrée spécifiée par bs ou ibs ou la taille par défaut) avant de commencer la copie.
  
-Sur les fichiers pointables ('​seekable files'​), ​ l'​implémentation lit les blocs ou pointe derrière eux. Sur les fichiers non pointables, les blocs sont lus et les données laissées de côté. ​+Sur les fichiers pointables ('​seekable files'​), ​ l'​implémentation lit les blocs ou pointe derrière eux. Sur les fichiers non pointables, les blocs sont lus et les données laissées de côté.
  
 === iseek=n === === iseek=n ===
Ligne 934: Ligne 939:
 === conv=valeur[,​valeur. . . ] === === conv=valeur[,​valeur. . . ] ===
 Où les '​valeurs'​ sont des symboles séparés par des virgules, tirés de la liste suivante : Où les '​valeurs'​ sont des symboles séparés par des virgules, tirés de la liste suivante :
-  * ascii : Convertit ​EBCDIC en ASCII.+  * ascii : Convertis ​EBCDIC en ASCII.
   * asciib : Convertit EBCDIC en ASCII en utilisant les translations de caractères compatibles avec BSD.   * asciib : Convertit EBCDIC en ASCII en utilisant les translations de caractères compatibles avec BSD.
   * ebcdic : Convertit ASCII en EBCDIC. Lors d'une conversion d'​enregistrements ASCII de longueur fixe sans caractères NEWLINE (nouvelle ligne), commence par créer un tube avec : **dd conv<​nowiki>​=</​nowiki>​unblock**.   * ebcdic : Convertit ASCII en EBCDIC. Lors d'une conversion d'​enregistrements ASCII de longueur fixe sans caractères NEWLINE (nouvelle ligne), commence par créer un tube avec : **dd conv<​nowiki>​=</​nowiki>​unblock**.
Ligne 944: Ligne 949:
  
   * block : Les données d'​entrée sont considérées comme une suite d'​enregistrements de longueur variable terminés par un caractère NEWLINE (fin de ligne) ou par un caractère EOF (fin de fichier), indépendamment des frontières entre blocs dans les données d'​entrée. ​ Chaque enregistrement est ensuite converti en un enregistrement ayant une longueur fixe, spécifiée par la taille de bloc pour la conversion (voir **cbs=**). Tous les caractères NEWLINE sont effacés de la ligne d'​entrée. Des caractères SPACE (espace) sont ajoutés aux lignes dont la taille est inférieure à celle de leur taille de bloc pour la conversion. Les lignes plus longues que la taille de bloc pour la conversion sont tronquées de façon à ce qu'​elles contiennent le plus grand nombre possible de caractères pouvant tenir dans cette taille. Le nombre des lignes tronquées est signalé.   * block : Les données d'​entrée sont considérées comme une suite d'​enregistrements de longueur variable terminés par un caractère NEWLINE (fin de ligne) ou par un caractère EOF (fin de fichier), indépendamment des frontières entre blocs dans les données d'​entrée. ​ Chaque enregistrement est ensuite converti en un enregistrement ayant une longueur fixe, spécifiée par la taille de bloc pour la conversion (voir **cbs=**). Tous les caractères NEWLINE sont effacés de la ligne d'​entrée. Des caractères SPACE (espace) sont ajoutés aux lignes dont la taille est inférieure à celle de leur taille de bloc pour la conversion. Les lignes plus longues que la taille de bloc pour la conversion sont tronquées de façon à ce qu'​elles contiennent le plus grand nombre possible de caractères pouvant tenir dans cette taille. Le nombre des lignes tronquées est signalé.
-  * unblock : Convertit les enregistrements de taille fixe en enregistrements de taille variable. Lit un nombre d'​octets égal à la taille de bloc pour la conversion ​spécifié ​par **cbs=** (ou le nombre d'​octets restant en entrée, s'il est inférieur à la taille de bloc pour la conversion),​ efface tous les caractères SPACE (espace) de remplissage en fin d'​enregistrement et ajoute un caractère NEWLINE (fin de ligne). ​ +  * unblock : Convertit les enregistrements de taille fixe en enregistrements de taille variable. Lit un nombre d'​octets égal à la taille de bloc pour la conversion ​spécifiée ​par **cbs=** (ou le nombre d'​octets restant en entrée, s'il est inférieur à la taille de bloc pour la conversion),​ efface tous les caractères SPACE (espace) de remplissage en fin d'​enregistrement et ajoute un caractère NEWLINE (fin de ligne).
  
 Les valeurs **block** et **unblock** sont mutuellement exclusives. Les valeurs **block** et **unblock** sont mutuellement exclusives.
Ligne 951: Ligne 956:
   * ucase : Transforme les minuscules en majuscules lorsque la locale définie par  LC_CTYPE le permet. Les caractères pour lesquels aucune correspondance majuscules/​minuscules n'est spécifiée dans la locale ne sont pas modifiés par cette conversion.   * ucase : Transforme les minuscules en majuscules lorsque la locale définie par  LC_CTYPE le permet. Les caractères pour lesquels aucune correspondance majuscules/​minuscules n'est spécifiée dans la locale ne sont pas modifiés par cette conversion.
   * swab : Permute chaque paire d'​octets d'​entrée. Si l'​enregistrement d'​entrée en cours possède un nombre impair d'​octets,​ le dernier octet de l'​enregistrement d'​entrée est ignoré.   * swab : Permute chaque paire d'​octets d'​entrée. Si l'​enregistrement d'​entrée en cours possède un nombre impair d'​octets,​ le dernier octet de l'​enregistrement d'​entrée est ignoré.
-  * noerror : N'​arrête pas le processus en cas d'​erreur d'​entrée. Lorsque survient une erreur d'​entrée,​ un message de diagnostic est envoyé vers la sortie d'​erreur standard, suivi par le décompte en cours des bloc d'​entrée et de sortie dans le même format que celui utilisé en complétion. Si la conversion **sync** est spécifiée,​ les données manquantes sont remplacées par des octets nuls qui sont traités normalement. Autrement, le bloc d'​entrée sera omis de la sortie. **notrunc** ne tronque pas le fichier de sortie. Dans le fichier de sortie les blocs non explicitement écrits par cette invocation de dd seront préservés. (Voir aussi le précédent opérande : **of=file**).+  * noerror : N'​arrête pas le processus en cas d'​erreur d'​entrée. Lorsque survient une erreur d'​entrée,​ un message de diagnostic est envoyé vers la sortie d'​erreur standard, suivi par le décompte en cours des blocs d'​entrée et de sortie dans le même format que celui utilisé en complétion. Si la conversion **sync** est spécifiée,​ les données manquantes sont remplacées par des octets nuls qui sont traités normalement. Autrement, le bloc d'​entrée sera omis de la sortie. **notrunc** ne tronque pas le fichier de sortie. Dans le fichier de sortie les blocs non explicitement écrits par cette invocation de dd seront préservés. (Voir aussi le précédent opérande : **of=file**).
   * notrunc : Le fichier de sortie ne subit pas de troncation (en son absence les blocs de données formés d'​octets à zéro sont remplacés par une chaîne de cinq astérisques).   * notrunc : Le fichier de sortie ne subit pas de troncation (en son absence les blocs de données formés d'​octets à zéro sont remplacés par une chaîne de cinq astérisques).
   * sync : Assemble chaque bloc d'​entrée à la taille du tampon **ibs=**, ajoutant des octets nuls. (Si soit **block** soit **unblock** est aussi specifié, ajoute des caractères SPACE, à la place d'​octets nuls.)   * sync : Assemble chaque bloc d'​entrée à la taille du tampon **ibs=**, ajoutant des octets nuls. (Si soit **block** soit **unblock** est aussi specifié, ajoute des caractères SPACE, à la place d'​octets nuls.)
Ligne 978: Ligne 983:
 LC_CTYPE LC_CTYPE
  
-Définit ​la locale utilisée pour l'​interprétation comme caractères des séquences d'​octets de données texte (par exemple, caractères à octet unique, par opposition aux caractères multi-octets dans les arguments ou les fichiers d'​entrée),​ la classification des caractères en majuscules ou minuscules, et le mappage des caractères d'une casse à une autre.+Définis ​la locale utilisée pour l'​interprétation comme caractères des séquences d'​octets de données texte (par exemple, caractères à octet unique, par opposition aux caractères multi-octets dans les arguments ou les fichiers d'​entrée),​ la classification des caractères en majuscules ou minuscules, et le mappage des caractères d'une casse à une autre.
  
 LC_MESSAGES LC_MESSAGES
Ligne 1012: Ligne 1017:
 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 1066: Ligne 1078:
 And the winner is ... : dd ! :-) And the winner is ... : dd ! :-)
  
-=====Interfaces graphiques===== 
-https://​launchpad.net/​gdiskdump 
  
 +=====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 FIXME (lien injoignable ?)
  
 +====Tutoriel sur l'​utilitaire====
 +  * [[https://​wiki.debian-fr.xyz/​La_commande_dd|La commande dd]] **(fr)** FIXME (lien injoignable ?)
 +  * [[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.1523863174.txt.gz
  • Dernière modification: Le 16/04/2018, 09:19
  • par 37.169.122.132