logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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
doc:systeme:dd [30/12/2011 10:05]
smolski
doc:systeme:dd [25/02/2020 09:13] (Version actuelle)
smolski [Les bases]
Ligne 1: Ligne 1:
-======dd=======+===== dd ======
  
-**ATTENTION !** La commande dd est très utile pour la sauvegarde de données, mais **elle peut avoir des effets désastreux si vous ne faites ​pas trés attention à ce que vous faites**!+  * Objet : dd 
 +  * Niveau requis : {{tag>​débutant avisé}} 
 +  * Commentaires : //Copier tout ou partie d'un disque par blocs d'​octets. // 
 +  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) 
 +  * Suivi : 
 +    * Création par [[user>​deuchdeb]] le 09-07-2010 
 +    * Testé par [[user>​deuchdeb]] le 02-09-2010 
 +    * Complété par [[user>​fiche]] le 15-08-2019 
 +  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=2770 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
 + 
 + 
 + 
 +<note warning>**ATTENTION !** La commande dd est très utile pour la sauvegarde de données, mais **elle peut avoir des effets désastreux si vous ne portez ​pas très attention à ce que vous faites**!</​note>​
  
 =====Introduction===== =====Introduction=====
Ligne 10: Ligne 22:
 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. 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.
  
-//On peut utiliser dd pour bien d'​autres choses : recherche dans les fichiers effacés, recherche dans la mémoire vive, création de disque virtuel etc...//+//On peut utiliser dd pour bien d'​autres choses : recherche dans les fichiers effacés, recherche dans la mémoire vive, création de disque virtuel, suppression des données d'un disque dur avant le don, revente d'un PC, etc...// 
  
 ===== Les bases ===== ===== Les bases =====
Ligne 24: Ligne 37:
 //​**source** représente les données à copier, **cible** est l'​endroit où les copier.// //​**source** représente les données à copier, **cible** est l'​endroit où les copier.//
  
 +==== status-progress Affichage d'une commande en cours ====
 +
 +Par défaut dd affiche déjà le temps d'​exécution et la vitesse de transfert à la fin, mais le terminal peut afficher le déroulement du transfert en temps réel :
 +<code root>dd if=/dev/sda of=/dev/sdb conv=noerror status=progress</​code>​
 +
 +Source sur le forum :
 +[[https://​debian-facile.org/​viewtopic.php?​pid=325112#​p325112]]
 +
 +Merci **Antic Bomber** et **èfpé**. :-)
 ===== Copier une partition de disque dur sur un autre disque dur ===== ===== Copier une partition de disque dur sur un autre disque dur =====
  
-<​note>​ Remplacer //sda1, sda2// par les valeurs qui correspondent à votre système +<​note>​ Remplacer //sda2, sdb2// par les valeurs qui correspondent à votre système ​: par exemple: //hdb1, hda1 ect...//</​note>​
-Example: //hdb1, hda1 ect...//</​note>​+
  
-<​code>​+<​code ​root>
 dd if=/​dev/​sda2 of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror dd if=/​dev/​sda2 of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror
 </​code>​ </​code>​
Ligne 39: Ligne 60:
 ===== Cloner un disque dur en entier ===== ===== Cloner un disque dur en entier =====
  
-<​code>​+<​code ​root>
 dd if=/dev/sda of=/dev/sdb conv=notrunc,​noerror dd if=/dev/sda of=/dev/sdb conv=notrunc,​noerror
 </​code>​ </​code>​
 +  * **notrunc** signifie « ne pas tronquer le fichier en sortie ».
 +  * **noerror** signifie « de continuer en cas d'​erreur ». Normalement,​ **dd** s'​arrête en cas d'​erreur.\\ Si vous vous interrogez sur un disque dur, si vous vous demandez s'il fonctionne ou pas, vous pouvez tenter de l'​utiliser,​ à titre de test, comme lecteur source de la commande dd. Vous devriez obtenir une erreur s'il ne fonctionne pas.\\ Les lecteurs cibles en revanche doivent être vraiment en très mauvais état pour provoquer une erreur due à dd.
  
-**notrunc** signifie «ne pas tronquer le fichier en sortie» (voir [[#​notrunc]] pour plus de détails). +<note warning>​ATTENTION ! Il faut que les disques soient au moins de même volume ​pour le clonage.</​note>​
- +
-**noerror** signifie de continuer en cas d'​erreur. Normalement,​ dd s'​arrête en cas d'​erreur. Si vous vous interrogez sur un disque dur, si vous vous demandez s'il fonctionne ou pas, vous pouvez tenter de l'​utiliser,​ à titre de test, comme lecteur source de la commande dd. Vous devriez obtenir une erreur s'il ne fonctionne pas. Les lecteurs cibles en revanche doivent être vraiment en très mauvais état pour provoquer une erreur due à dd. +
  
 +IMPORTANT: Les disques ne doivent pas être montés!!Utiliser un système live pour travailler.
 ===== Créer un disque de sauvegarde ===== ===== Créer un disque de sauvegarde =====
  
 Copier son disque de travail en cours sda vers le disque sdb. Copier son disque de travail en cours sda vers le disque sdb.
  
-<​code>​+<​code ​root>
 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>​
Ligne 58: Ligne 79:
 Si je détruis l'​installation sur sda, je n'ai qu'à booter avec un CD DebianLive et copier sdb vers sda : Si je détruis l'​installation sur sda, je n'ai qu'à booter avec un CD DebianLive et copier sdb vers sda :
  
-<​code>​+<​code ​root>
 dd if=/dev/sdb of=/dev/sda bs=4096 conv=notrunc,​noerror dd if=/dev/sdb of=/dev/sda bs=4096 conv=notrunc,​noerror
 </​code>​ </​code>​
 +
  
 Je veux copier ma partion root dans mon home  Je veux copier ma partion root dans mon home 
-<​code>​+<​code ​root>
 dd if=/​dev/​sda2 (root) of=/​home/​user/​root.img bs=4096 conv=notrunc,​noerror dd if=/​dev/​sda2 (root) of=/​home/​user/​root.img bs=4096 conv=notrunc,​noerror
 </​code>​ </​code>​
Ligne 69: Ligne 91:
 pour réaliser un backup de root faire : pour réaliser un backup de root faire :
  
-<​code>​+<​code ​root>
 dd if=/​home/​user/​root.img of=/​dev/​sda2 (root) bs=4096 conv=notrunc,​noerror dd if=/​home/​user/​root.img of=/​dev/​sda2 (root) bs=4096 conv=notrunc,​noerror
 </​code>​ </​code>​
Ligne 75: Ligne 97:
 //Remettre l'​image de root dans la partition root si vous avez semé la pagaille et ne pouvez plus lancer le serveur X, ou éditer /etc/fstab, et ne trouvez pas ce que vous avez fait de mal. Cela ne prend que quelques minutes pour restaurer une partition root de 15 Go depuis un fichier image.// //Remettre l'​image de root dans la partition root si vous avez semé la pagaille et ne pouvez plus lancer le serveur X, ou éditer /etc/fstab, et ne trouvez pas ce que vous avez fait de mal. Cela ne prend que quelques minutes pour restaurer une partition root de 15 Go depuis un fichier image.//
  
 +===== Créer une clé installation debian bootable =====
  
 +Voir le tuto : \\
 +[[doc:​install:​usb-boot|Cle USB Installation debian]]
 ===== Copier une partition de disque dans un fichier placé sur une partition différente ===== ===== Copier une partition de disque dans un fichier placé sur une partition différente =====
  
 <note warning>​Attention!! Ne pas copier une partition sur la même partition.</​note>​ <note warning>​Attention!! Ne pas copier une partition sur la même partition.</​note>​
  
-<​code>​+<​code ​user>
 dd if=/​dev/​sdb2 of=/​home/​user/​partition.image bs=4096 conv=notrunc,​noerror dd if=/​dev/​sdb2 of=/​home/​user/​partition.image bs=4096 conv=notrunc,​noerror
 </​code>​ </​code>​
Ligne 86: Ligne 111:
 Cela créera un fichier qui est l'​exacte réplique de la partition sdb2. Vous pouvez remplacer par hdb, sda, hda ou toute autre désignation de votre disque. Ou : Cela créera un fichier qui est l'​exacte réplique de la partition sdb2. Vous pouvez remplacer par hdb, sda, hda ou toute autre désignation de votre disque. Ou :
  
-<​code>​+<​code ​user>
 dd if=/​dev/​sdb2 ibs=4096 | gzip > partition.image.gz conv=noerror dd if=/​dev/​sdb2 ibs=4096 | gzip > partition.image.gz conv=noerror
 </​code>​ </​code>​
Ligne 92: Ligne 117:
 Crée une archive gzip de la partition complète. Pour la restauration,​ utiliser : Crée une archive gzip de la partition complète. Pour la restauration,​ utiliser :
  
-<​code>​+<​code ​user>
 dd if=/​dev/​sdb2 ibs=4096 | gunzip > partition.image.gz conv=noerror dd if=/​dev/​sdb2 ibs=4096 | gunzip > partition.image.gz conv=noerror
 </​code>​ </​code>​
Ligne 98: Ligne 123:
 Pour bzip2 (plus lent, plus petit), remplacer par bzip2 et bunzip2, et nommer le fichier Pour bzip2 (plus lent, plus petit), remplacer par bzip2 et bunzip2, et nommer le fichier
  
-<​code>​+<​code ​user>
 .bz2 .bz2
 </​code>​ </​code>​
Ligne 104: Ligne 129:
 ===== Restaurer une partition de disque depuis un fichier image ===== ===== Restaurer une partition de disque depuis un fichier image =====
  
-<​code>​+<​code ​user>
 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>​
Ligne 116: Ligne 141:
 ==== Copier une disquette sur le disque dur ==== ==== Copier une disquette sur le disque dur ====
  
-<​code>​+<​code ​root>
 dd if=/dev/fd0 of=/​home/​user/​floppy.image bs=2x80x18b conv=notrunc dd if=/dev/fd0 of=/​home/​user/​floppy.image bs=2x80x18b conv=notrunc
 </​code>​ </​code>​
Ligne 122: Ligne 147:
 ou ou
  
-<​code>​+<​code ​root>
 dd if=/dev/fd0 of=/​home/​user/​floppy.image conv=notrunc dd if=/dev/fd0 of=/​home/​user/​floppy.image conv=notrunc
 </​code>​ </​code>​
Ligne 137: Ligne 162:
  
 Faire : Faire :
-<​code>​+<​code ​user>
 dd if=/​home/​user/​floppy.image of=fd0 bs=2x80x18b conv=notrunc dd if=/​home/​user/​floppy.image of=fd0 bs=2x80x18b conv=notrunc
 </​code>​ </​code>​
- 
- 
  
 ===== Sauvegarde de disquettes sur disque dur ===== ===== Sauvegarde de disquettes sur disque dur =====
Ligne 147: Ligne 170:
 Je sauvegarde toutes mes disquettes sur disque dur. Les disquettes ne sont pas éternelles,​ aussi je fais : Je sauvegarde toutes mes disquettes sur disque dur. Les disquettes ne sont pas éternelles,​ aussi je fais :
  
-<​code>​+<​code ​user>
 dd if=/dev/fd0 of=/​home/​sam/​disquettes/​backup.bin conv=notrunc dd if=/dev/fd0 of=/​home/​sam/​disquettes/​backup.bin conv=notrunc
 </​code>​ </​code>​
Ligne 153: Ligne 176:
 Si ma disquette défaille, je peux faire des copies en nombre illimité : Si ma disquette défaille, je peux faire des copies en nombre illimité :
  
-<​code>​+<​code ​user>
 dd if=/​home/​sam/​disquettes/​backup.bin of=/dev/fd0 conv=notrunc dd if=/​home/​sam/​disquettes/​backup.bin of=/dev/fd0 conv=notrunc
 </​code>​ </​code>​
  
  
-===== Les Options ===== 
-**if**=fichier\\ 
-Lire les données depuis le fichier indiqué plutôt que depuis l'​entrée standard. 
  
-**of**=fichier\\ +===== Supprimer ​les données sur un disque dur =====
-Écrire ​les données ​dans le fichier mentionné, et non pas sur la sortie standard. Si conv=notrunc n'est pas indiqué, le fichier est initialement tronqué à la taille spécifiée par seek(0 octets si seekn'est pas fourni).+
  
-**ibs**=nombre\\ 
-Lire le nombre indiqué d'​octets en une fois. Par défaut 512. 
  
-**obs**=nombre\\ +La commande dd permet également ​d'effacer les données présentes sur un disque avant de donner ou vendre son PC. 
-Écrire le nombre indiqué ​d'octets en une foisPar défaut 512.+Dans les commandes ci-dessous, sdX correspond au disque (en principe, le disque interne correspond à sda).
  
-**bs**=nombre\\ +<code user> 
-Lire et écrire le nombre indiqué d'​octets en une fois. A priorité sur ibs et obs. (et indiquer ​bs n'est pas équivalent à indiquer la\\ +sudo dd if=/​dev/​zero of=/​dev/​sdX ​bs=4096 status=progress 
-même valeur pour ibs et obs du moins lorsqu'​aucune autre conversion que sync, noerror et notrunc n'est indiquée, car cela\\ +</​code>​
-indique que chaque bloc d'​entrée doit être copié dans un bloc de sortie indépendant,​ sans regrouper les blocs plus courts).\\+
  
-**cbs**=nombre\\ 
-Indique la taille des blocs pour les conversion block et unblock. 
  
-**skip**=nombre\\ +Et pour que ce soit plus rapide :
-Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture.+
  
-**seek**=nombre\\ +<code user> 
-Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'​écriture.+sudo dd if=/​dev/​zero of=/dev/sdX bs=1M status=progress 
 +</​code>​
  
-**count**=nombre\\ 
-Copier seulement le nombre indiqué de blocs (dont la taille est fournie par ibs), et non pas tout jusqu'​à la fin du fichier. 
  
-**conv**=conversion[,​conversion]...\\ +===== Les Options =====
-Modifier le fichier comme indiqué par l'​argument conversion, qui peut prendre les valeurs suivantes (pas d'​espace autour desvirgules lorsque plusieurs arguments sont fournis) :\\ +
-**ascii** \\ +
-Convertir l'​EBCDIC en ASCII. +
- +
-**ebcdic**\\ +
-Convertir l'​ASCII en EBCDIC. +
- +
-**ibm**\\ +
- ​Convertir l'​ASCII en EBCDIC IBM. +
- +
-**block** \\ +
-Compléter les blocs se terminant par un saut de ligne avec des espaces, jusqu'​à atteindre la taille mentionnée par +
-cbs. +
- +
-**unblock**\\ +
-Remplacer les espaces en fin de blocs (de taille cbs) par un saut de ligne. +
- +
-**lcase**\\ +
- ​Transformer les majuscules en minuscules. +
- +
-**ucase** \\ +
-Transformer les minuscules en majuscules. +
- +
-**swab**\\ +
- ​Échanger par paire les octets lus en entrée. Contrairement à la commande dd d'​Unix,​ la version GNU fonctionne\\ +
-également lorsqu'​on copie un nombre impair d'​octets. Dans ce cas, le dernier octet est tout simplement copié.\\ +
-[POSIX 1003.2b, interprétations PASC 1003.2 #3 and #4] +
- +
-**noerror**\\ +
-Continuer même après des erreurs de lecture. +
- +
-**notrunc**\\ +
-Ne pas limiter la taille du fichier de sortie.+
  
-**sync** Compléter chaque bloc lu avec des NULs pour atteindre la taille ibs.+^Option ​ ^Utilisation ​ ^ 
 +|**if**=fichier ​ |Lire les données depuis le fichier indiqué plutôt que depuis l'​entrée standard. ​ | 
 +|**of**=fichier ​ |Écrire les données dans le fichier mentionné, et non pas sur la sortie standard. Si conv=notrunc n'est pas indiqué, le fichier est initialement tronqué à la taille spécifiée par seek= (0 octets si seek= n'est pas fourni). ​ | 
 +|**ibs**=nombre ​ |Lire le nombre indiqué d'​octets en une fois. Par défaut 512.  | 
 +|**obs**=nombre ​ |Écrire le nombre indiqué d'​octets en une fois. Par défaut 512.  | 
 +|**bs**=nombre ​ |Lire et écrire le nombre indiqué d'​octets en une fois. A priorité sur ibs et obs. (et indiquer bs n'est pas équivalent à indiquer la même valeur pour ibs et obs du moins lorsqu'​aucune autre conversion que sync, noerror et notrunc n'est indiquée, car cela indique que chaque bloc d'​entrée doit être copié dans un bloc de sortie indépendant,​ sans regrouper les blocs plus courts). ​ | 
 +|**cbs**=nombre ​ |Indique la taille des blocs pour les conversion block et unblock. ​ | 
 +|**skip**=nombre ​ |Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture. ​ | 
 +|**seek**=nombre ​ |Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'​écriture. ​ | 
 +|**count**=nombre ​ |Copier seulement le nombre indiqué de blocs (dont la taille est fournie par ibs), et non pas tout jusqu'​à la fin du fichier. ​ | 
 +|**conv**=conversion[,​conversion]... ​ |Modifier le fichier comme indiqué par l'​argument conversion, qui peut prendre les valeurs suivantes (pas d'​espace autour des virgules lorsque plusieurs arguments sont fournis) ainsi :\\ **ascii** Convertir l'​EBCDIC en ASCII.\\ **ebcdic** Convertir l'​ASCII en EBCDIC.\\ **ibm** Convertir l'​ASCII en EBCDIC IBM.  | 
 +|**block** ​ |Compléter les blocs se terminant par un saut de ligne avec des espaces, jusqu'​à atteindre la taille mentionnée par cbs.  | 
 +|**unblock** ​ |Remplacer les espaces en fin de blocs (de taille cbs) par un saut de ligne. ​ | 
 +|**lcase** ​ |Transformer les majuscules en minuscules. ​ | 
 +|**ucase** ​ |Transformer les minuscules en majuscules. ​ | 
 +|**swab** ​ |Échanger par paire les octets lus en entrée. Contrairement à la commande dd d'​Unix,​ la version GNU fonctionne également lorsqu'​on copie un nombre impair d'​octets. Dans ce cas, le dernier octet est tout simplement copié.\\ [POSIX 1003.2b, interprétations PASC 1003.2 #3 and #4]  | 
 +|**noerror** ​ |Continuer même après des erreurs de lecture. ​ | 
 +|**notrunc** ​ |Ne pas limiter la taille du fichier de sortie. ​ | 
 +|**sync** ​ |Compléter chaque bloc lu avec des NULs pour atteindre la taille ibs.  |
  
 ===== Les variables d'​environnement ===== ===== Les variables d'​environnement =====
Ligne 246: Ligne 243:
 ===== Récupérer les données d'un disque ===== ===== Récupérer les données d'un disque =====
  
-  * [[manuel:recupdonnee]]+  * [[:doc:​systeme:​ddrescue]]
  
 +===== Lien sur l'​utilisation de dd sur le forum =====
 +
 +  * [[https://​debian-facile.org/​viewtopic.php?​pid=200330#​p200330]]
 +  * [[https://​debian-facile.org/​viewtopic.php?​pid=255790#​p255790]] Clé bootable pour installation.
 ===== Liens externes ===== ===== Liens externes =====
 +
   *[[http://​jp.barralis.com/​linux-man/​man1/​dd.1.php|Man de dd en français]]   *[[http://​jp.barralis.com/​linux-man/​man1/​dd.1.php|Man de dd en français]]
   *[[http://​wiki.mandriva.com/​fr/​Copie_par_blocs_d%27octets_avec_dd| La source de ce document, trés complet]]   *[[http://​wiki.mandriva.com/​fr/​Copie_par_blocs_d%27octets_avec_dd| La source de ce document, trés complet]]
doc/systeme/dd.1325235901.txt.gz · Dernière modification: 30/12/2011 10:05 par smolski

Pied de page des forums

Propulsé par FluxBB