Outils pour utilisateurs

Outils du site


start:parcours_linux:dd

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édentesRévision précédente
Prochaine révision
Révision précédente
start:parcours_linux:dd [2020/05/26 14:49] gerardadminstart:parcours_linux:dd [2023/05/17 20:47] (Version actuelle) – [Commande dd avec barre de defillement] gerardadmin
Ligne 1: Ligne 1:
 +======== La commande dd ========
 +
 +Liens web sur la commande dd :
 +
 +[[https://doc.ubuntu-fr.org/dd| dd et Ubuntu ]]
 +
 +[[https://www.linuxtricks.fr/wiki/pv-avoir-des-informations-sur-le-temps-d-une-tache|commande pv : Avoir des informations sur le temps d'une tâche]]
 +
 +[[https://memo-linux.com/afficher-une-barre-de-progression-pour-la-commande-dd-sous-linux/|barre-de-progression-pour-la-commande-dd-]]
 +
 +Pour pouvoir copier ou modifier une partition, elle ne doit pas être en cours d'utilisation.
 +
 +Imaginez que vous cherchiez à copier un livre que l'auteur est en train de modifier où n'a pas encore terminé d'écrire…
 +
 +
 +
 +== Introduction: ==
 +
 +Extrait de la page de man de dd :
 +
 +"dd copie un fichier (par défaut, depuis l'entrée standard vers la sortie standard) en permettant de sélectionner la taille de bloc, et d'effectuer des conversions."
 +
 +Utilisée fréquemment, la commande dd est très simple d'utilisation, très puissante et... tout aussi dangereuse.
 +Vérifiez toujours bien les commandes deux (trois ?) fois avant de les lancer.
 +
 +LES COMMANDES QUI SUIVENT PEUVENT VOUS FAIRE PERDRE TOUTES LES INFORMATIONS CONTENUES DANS VOTRE MACHINE SI ELLES NE SONT PAS CONVENABLEMENT UTILISÉES. VOUS ÊTES PRÉVENUS!
 +
 +'''NOTE:''' Pour pouvoir être copiée, déplacée, agrandie ou réduite, la partition source doit au préalable être "démountée" du système (voir "umount").
 +
 +== Syntaxe ==
 +
 +La syntaxe d'une ligne de commandes utilisant dd se présente généralement sous cette forme:
 +
 +      dd if=<source> of=<cible> bs=<taille des blocs> skip= seek= conv=<conversion>
 +
 +#source = D'où proviennent les données à copier;
 +#cible = où seront copiées les données traitées par la commande;
 +#bs = taille des blocs, de puissance 2, par défaut égale à 512 octets;
 +#skip = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de la lecture;
 +#seek = Ignorer le nombre indiqué de blocs (dont la taille est fournie par ibs) au début de l'écriture. 
 +#conv = 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) : 
 +
 + ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync.
 +
 +== Utilisation ==
 +
 +== Copier une partition d'un disque dur vers un partition d'un autre disque dur ==
 +
 +Copie l'intégralité de la partition sdl vers la partition sdm et ne pas interrompre la copie en cas d'erreurs.
 +
 +        sudo dd if=/dev/sdl of=/dev/sdm bs=8192 conv=notrunc,noerror status=progress
 +               
 + 256000+0 enregistrements lus
 + 256000+0 enregistrements écrits
 + 1048576000 octets (1,0 GB) copiés, 30,778 s, 34,1 MB/s
 +
 +noerror = Continuer même en cas d'erreur.
 +
 +       
 +
 +==Remarque au sujet de l'UUID.==
 +
 +Copier une partition autre vers une partition copie aussi l'UUID puisqu'il est inscrit dans la partition même.< br />
 +Vous vous retrouveriez alors avec deux partitions qui ont le même UUID...
 +
 +      blkid
 + 
 +     /dev/sda9: UUID="a5355774-2e6b-45fe-8993-0f23602c1616" TYPE="ext2"
 +     /dev/sdb1: UUID="a5355774-2e6b-45fe-8993-0f23602c1616" TYPE="ext2"
 +
 +Il faut alors modifier l'UUID de la partition copiée pour ne pas avoir de conflit si la partition originale et sa copie sont accessibles au système :
 +
 +
 +     # tune2fs -U random /dev/sdb1
 +     # blkid
 +     /dev/sda9: UUID="a5355774-2e6b-45fe-8993-0f23602c1616" TYPE="ext2"
 +     /dev/sdb1: UUID="75aa7a37-d2a2-4cf4-88f8-616067c7a684" TYPE="ext2"
 +
 +== Cloner un disque dur en entier ==
 +
 +Copie de l'intégralité (y compris le mbr) du disque sdg vers le disque sdh:
 +
 +     #dd if=/dev/sdg of=/dev/sdh conv=noerror
 + 
 + 4030464+0 enregistrements lus
 + 4030464+0 enregistrements écrits
 + 2063597568 octets (2,1 GB) copiés, 1160,41 s, 1,8 MB/s
 +
 +Copie de l'intégralité (y compris le mbr) du disque sdm vers le disque sdl avec visualisation de la progression:
 +
 +        Autre exemple :
 +        sudo dd if=/dev/sdm of=/dev/sdl bs=100M status=progress  conv=noerror,sync
 +
 +== Réaliser un fichier image ISO copie d'un CD-ROM ==
 +
 +     #dd if=/dev/sr0 of=/home/laurent/cd.iso bs=2048
 + 
 + 737+0 enregistrements lus
 + 737+0 enregistrements écrits
 + 1509376 octets (1,5 MB) copiés, 3,3215 s, 454 kB/s
 +
 +Pour monter le fichier image ISO obtenu :
 +
 +     # mkdir /mnt/cd
 +     # mount -o loop -t iso9660 cd.iso /mnt/cd
 +
 +Montage permanent par /etc/fstab :
 +
 +     /chemin_vers_iso/cd.iso   /mnt/cd  iso9660 rw,user,noauto 0 0
 +
 +== Effacer un lecteur ==
 +
 +**ATTENTION, COMMANDE DANGEREUSE!**
 +
 +Pour les paranos...
 +La commande suivante remplie 7 fois de suite un périphérique avec des données aléatoires.
 +Autant dire qu'il ne sera plus possible de récupérer quoi que ce soit sur ce périphérique...
 +
 +      #for n in $(seq 7); do dd if=/dev/urandom of=/dev/sdc bs=8b; done
 + 
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 37,0691 s, 6,9 MB/s
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 37,1506 s, 6,9 MB/s
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 36,6351 s, 7,0 MB/s
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 36,4881 s, 7,0 MB/s
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 36,4908 s, 7,0 MB/s
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 36,5277 s, 7,0 MB/s
 +     dd: écriture de « /dev/sdc »: Aucun espace disponible sur le périphérique
 +     62465+0 enregistrements lus
 +     62464+0 enregistrements écrits
 +     255852544 octets (256 MB) copiés, 36,897 s, 6,9 MB/s
 +
 +== Sauvegarder le chargeur de boot d'un disque dur ==
 +
 +     #dd if=/dev/sda of=ChrgBoot.dd bs=440 count=1
 +     1+0 enregistrements lus
 +     1+0 enregistrements écrits
 +     440 octets (440 B) copiés, 0,000473112 s, 930 kB/s
 +
 +Cette commande copiera les 440 premiers octets du disque dur dans un fichier.
 +
 +== Sauvegarder le MBR d'un disque dur ==
 +
 +     #dd if=/dev/sda of=MBR.dd bs=512 count=1
 +     1+0 enregistrements lus
 +     1+0 enregistrements écrits
 +     512 octets (512 B) copiés, 7,4232e-05 s, 6,9 MB/s
 +
 +Cette commande copiera les 512 premiers octets du disque dur dans un fichier.
 +
 +
 +== Sauvegarder la table des partitions d'un disque dur ==
 +
 +    $ dd if=/dev/sda of=TablePart.dd bs=64 count=1 skip=446
 +    1+0 enregistrements lus
 +    1+0 enregistrements écrits
 +    64 octets (64 B) copiés, 0,000558829 s, 115 kB/s
 +
 +Cette commande copiera les 512 premiers octets du disque dur dans un fichier.
 +
 +pour restaurer la table de partition
 + 
 +    dd if=TablePart.dd of=/dev/sda bs=64 count=1 seek=446
 +    64+0 enregistrements lus
 +    64+0 enregistrements écrits
 +    64 octets (64 B) copiés, 0,00132602 s, 48,3 kB/s
 +
 +Cette commande copiera la table des partitions contenue dans le fichier '''TablePart.dd''' sur le disque '''/dev/sda'''
 +
 +== Sauvegarder un disque dur ou une partition dans une image compressée ==
 +
 +La ligne de commandes suivante permet de créer un fichier compressé, qui pourra être utilisé pour restaurer la partition "n" ("n" est une valeur numérique) du disque "/dev/sdX" ("X" est une lettre alphabétique).<br />
 +(peu importe le type de partition)
 +
 +     #dd if=/dev/sdXn | gzip -c > /media/suportamovible/fichierimage_part_dd.gz 
 +
 +Dans cette ligne de commandes, le programme "dd" lit par blocs (de 512 octets par défaut) le contenu de la partition "n" du disque "X" (/dev/sdXn)
 +Le flux de sortie du programme "dd" est connecté par un tube anonyme (|) au flux d'entrée du programme "gzip".
 +"gzip" va compresser ce flux et le retourner par son flux de sortie (option "c") qui sera re-dirigé par ">" vers le fichier "/media/suportamovible/fichierimage_part_dd.gz"
 +Si le fichier "/media/suportamovible/fichierimage_part_dd.gz" existait avant l'exécution de cette ligne de commandes, il serait "écrasé".
 +Pour restaurer la partition ainsi sauvegardée faire :
 +
 +     #gzip -cd /media/suportamovible/fichierimage_part_dd.gz | dd of=/dev/sdXn
 +
 +Dans cette commande, le programme "gzip" dé-compresse (option "d") le fichier "/media/suportamovible/fichierimage_part_dd.gz".
 +Le flux de sortie du programme "gzip" (option "c") est connecté à un tube anonyme (|) qui est connecté à l'entrée du programme "dd".
 +La sortie (of=) du programme "dd" se fera sur la partition "n" du disque "X" (/dev/sdXn),
 +et le contenu de cette partition sera écrasé et remplacé par le contenu du fichier sauvegardé par la ligne de commandes précédente.
 +
 +==== Clef_usb_d'installation- Graver une ISO sur une clef USB  ====
 +
 +=== Commande dd avec barre de defillement ===
 +
 +   (PV -n image.iso | dd off=/dev/sdb bs=1M && Sync) 2>&1 |dialogue --gauge "la commande dd est en cours d exécution, merci de patienter..." 10 70 0
 +
 +
 +== Références ==
 +
 +[[http://pwet.fr/man/linux/commandes/dd| Page de man dd]]
 +
 +[[http://www.softpanorama.org/Tools/dd.shtml| Unix DD Command and Image Creation]]
 +
 +[[http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_To_Do_Eveything_With_DD |The real dd command]]
 +
 +