Utilisation de la commande dd

La commande dd (Dataset Definition) est un outil simple, utile et étonnamment facile à utiliser; Avec cet outil, vous pouvez faire la même chose, sur les appareils: disques et partitions, comme avec des programmes commerciaux comme Norton Ghost, sur Windows ou des programmes gratuits comme CloneZilla, sous Linux, avec juste une courte ligne de commande.

Syntaxe de base:

La syntaxe la plus basique pour utiliser la commande dd serait la suivante:

sudo dd if=origen of=destino

si signifie "fichier d'entrée = fichier d'entrée", C'est-à-dire ce que vous voulez copier et des moyens "fichier de sortie = fichier de sortie«, C'est-à-dire le fichier de destination (où les données seront copiées);origine et La destination peut être des périphériques (lecteur de CD ou DVD, disque dur, disquette, clé USB, partition, etc.), fichier de sauvegarde ou image disque, etc., mais pas de dossiers ou de sous-dossiers.

Pour une utilisation fluide de cette commande, la première chose à faire est de toujours savoir clairement quelles partitions / disques durs sont appelés sous Linux (/ dev / sda1 par exemple; / dev dérive de device = device, en anglais). pour connaître le disque / la partition source et de destination, quelque chose que nous pouvons facilement trouver avec la commande sudo fdisk -lo avec un programme de partition graphique comme gparted. Toutes les informations sur la commande dd peuvent être consultées avec la commande man dd et info dd,

Cette commande doit être utilisée avec prudence, et toujours en vérifiant l'ordre et le nom des disques / partitions, car tout comme un disque est cloné, il l'efface en un tournemain.

Syntaxe avec la commande pv: L'utilisation de la commande dd avec la syntaxe précédente présente un petit inconvénient, car c'est une commande très réservée - elle ne donne pas d'informations - car lorsqu'elle est exécutée, l'invite du terminal reste immobile, donc on ne sait pas quoi est ce qui se passe et combien de temps il lui reste pour terminer son exécution. Cet inconvénient mineur peut être résolu en ajoutant la commande pv, (*) - qui agit comme un tube terminal qui mesure les données qui le traversent - à la syntaxe de la commande dd, de sorte que maintenant la syntaxe serait:

dd if=origen |pv|dd of=destino

On obtiendrait ainsi une sorte de barre de progression dans le terminal, les informations sur les octets transférés, le temps de fonctionnement et le taux de transfert, le tout en temps réel.

(alf) - (~) └──┤ jj si = / devmmcblk0p1 | pv | jj de = / dev / mmcblk0p2 1,630 0 Go 21:30:1,12 [XNUMX Mo / s] [

De plus, une fois terminé, il nous montre des statistiques sur le taux de transfert, le total des octets transférés et le temps total nécessaire pour transférer toutes les données.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 enregistrement lu <=> 10530816 + 0 enregistrement écrit 5391777792 octets (5.4 Go) copiés, 3873,48 s, 1,4 Mo / s 5,02 Go 1:04:33 [1,33 Mo / s] [<=> 10530816 + 0 enregistrements lus <=> 10530816 + 0 enregistrements écrits 5391777792 octets (5.4 Go) copiés, 3873,48, 1,4 s, XNUMX Mo / s (alf) - (~) └──┤

(*) Vérifiez avant d'exécuter une ligne de commande avec cette seconde syntaxe, que nous avons le paquet pv installé sur le système, ou installez-le si nous ne l'avons pas: les deux avec Synaptic.

Voyons quelques exemples pratiques et options de cette commande (dans sa version avec l'astuce expliquée précédemment avec la commande pv):

A) À propos des disques durs et des partitions:

= Cloner un disque dur:

Avec cela, nous clonerions le disque hda dans hdb. (Disques IDE):

sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M

Avec cela, nous clonerions le disque sda ​​dans sdb. (Disques SATA):

sudo dd if=/dev/sda |pv|dd of=/dev/sdb bs=1M

Avec l'option bs = 1M, on obtient que la lecture et l'écriture se font dans des blocs de 1 mégaoctet (moins, ce serait plus lent mais plus sûr, et avec plus on risque de perdre des données en cours de route).

Gardez à l'esprit que de cette façon, le disque est enregistré "tel quel", MBR, table de partition, espace vide, etc ..., de sorte que vous ne pouvez enregistrer que sur un disque de taille identique ou supérieure.

= Ecrire uniquement la première partition (hda1) du disque source sur le disque de destination (hdb):

sudo dd if=/dev/hda1 |pv|dd of=/dev/hdb bs=1M

= Gravez le disque entier (hda) sur la première partition (hdb1) du disque de destination:

sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M

= Créer une image - peut être bin ou iso - à partir du disque dur (hda), dans le répertoire / home:

sudo dd if=/dev/hda |pv|dd of=/home/hda.bin

= Effacer complètement les informations sur un disque: pour ce faire, remplissez le disque avec des caractères aléatoires, cinq fois. Il n'y aura aucune trace d'informations sur le disque:

for n in {1..5}; do dd if=/dev/urandom |pv|dd of=/dev/hda bs=8b conv=notrunc;

= Effacez n'importe quelle partition et tout le disque de n'importe quel périphérique:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Effacement complet du disque)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Effacement de la partition de disque)

où: x est le disque à effacer, a est la partition à effacer

Cette opération est très utile pour effacer complètement n'importe quelle partition, de plus les données qui seront effacées ne peuvent pas être récupérées, c'est donc un effacement de bas niveau et très sûr, très utile par exemple lorsque les clés USB sont infectées par des virus avec notre chères fenêtres.

B) Sur un CD / DVD

= Créer / Monter une image .iso à partir d'un CD (ou DVD)

Pour créer l'image .iso d'un CD dans le répertoire / home:

sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso

Pour monter l'image .iso à partir du CD:

sudo mount -o loop imagedeCD.iso /mnt/home

= Récupérer un DVD rayé (Cela ne récupère pas l'intégralité du DVD, dans ce cas uniquement les secteurs lisibles). Il convient également aux disques durs défectueux:

sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperado.iso conv=noerror,sync

L'option noerror est utilisée pour éviter les erreurs de lecture dans toutes les situations.

C) À propos de MBR et VBS:

= Copier / restaurer l'enregistrement de démarrage principal (MBR):

Pour copier le MBR:

sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512

Pour restaurer le MBR:

sudo dd if=mbr |pv|dd of=/dev/hda

= Nettoyez notre MBR et notre table de partition:

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=512 count=1

= Nettoyez le MBR mais ne touchez pas la table des partitions, (très utile pour effacer le GRUB sans perdre de données dans les partitions):

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=446 count=1

= Copier / restaurer le secteur de démarrage du volume (VBS):

Pour copier le VBS:

sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512

Pour restaurer le VBS:

sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/hda

D) Autres:

= Graver une image disque dans notre répertoire / home, en ignorant les erreurs de disque (très utile pour les disques qui meurent):

sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores.iso

= Créer un fichier vide de 1 Mo:

sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024

= Créez un fichier d'échange de 2 Go:

sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace

= Convertit toutes les lettres en majuscules:

sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase

Utilisez la commande dd avec un programme d'environnement graphique: Gdiskdump, est un environnement graphique pour cette commande dd qui facilite la tâche de cloner des partitions ou des disques, rapidement et facilement. Il peut être téléchargé depuis la page https://launchpad.net/gdiskdump/ Une fois que nous l'ouvrons, avec les permissions root - sudo gdiskdump -, nous voyons que le programme est très facile à utiliser, puisqu'il suffit de lui indiquer la partition ou le disque à cloner (Input Format) et sa destination (Output Format).


43 commentaires, laissez le vôtre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   sieg84 dit

    Je suis presque devenu diabétique avec la mauvaise utilisation de la commande dd.
    au fait, quelle serait la différence avec dd_rescue?

    1.    déjà dit

      ddrescue par défaut ne s'arrête pas sur les erreurs de lecture et tente par divers moyens de récupérer des informations illisibles.

    2.    sheko dit

      hahahha J'ai aussi très mal utilisé la commande dd, elle est beaucoup plus puissante que je ne le pensais.

  2.   Pourritures87 dit

    Je commente que je pense que chaque utilisateur de l'arche a utilisé à un moment donné

  3.   Alf dit

    @ sieg84, la différence est que le dd a été interrompu avec une erreur de lecture ou de périphérique, dans ce cas, cela ne se produira pas car le bloc endommagé le lira un certain nombre de fois et continuera avec le suivant, cela offre également l'avantage que On peut l'exécuter plusieurs fois sur la même image et il ne repartira pas de zéro mais essaiera de le terminer.

    Il est à noter que dd_rescue je ne l'ai jamais utilisé.

    1.    merlin le debianite dit

      S'il y a une interface graphique faite dans qt pour KDE qui utilise cette commande? ou dois-je démissionner.?

      1.    Juillet dit

        Gdiskdump est plus qu'une interface graphique pour cette commande (elle est basée dessus) et bien que je ne sache pas s'ils l'ont fait dans qt (je ne pense pas), cela fonctionne presque certainement pour vous dans KDE

    2.    sieg84 dit

      Merci pour la clarification.
      Je n'ai utilisé que dd_rescue pour copier ISO sur USB (principalement parce que dans le wiki openSUSE, ils l'avaient).
      dd_rescue tu.iso / dev / sdX
      ce que j'aime, c'est qu'il montre une barre de progression:
      http://box.jisko.net/i/110db781.png

  4.   Krel dit

    Alf :
    J'ai récemment vu ce même article publié sur le blog Hatteras. Il est probable qu'il ne le prenne pas mal mais je ne sais pas, du moins par courtoisie, il serait bon de s'y référer. Il gagne donc aussi dans le positionnement Web.

    Je ne veux pas créer de dilemme avec cela, mais à première vue, l'article me semble identique à 95% sauf pour les captures d'écran du terminal que vous avez adaptées. Il a même mentionné ses sources.

  5.   merlin le debianite dit

    Intéressant, j'avoue que | pv | je ne le connaissais pas.

    Krel Je pense que la source est dans le wiki ubuntu ou dans les salutations arch.

  6.   Alf dit

    @krel, le truc Linux est le suivant:

    Tout au long de mon voyage dans ce monde, j'ai lu et rassemblé des choses, j'ai un cahier avec plus de 400 messages que j'ai mis dans Ubuntu Mexico, qui était la communauté où j'ai le plus contribué à mes débuts, malheureusement les choses peuvent se répéter, si vous examinez le grand nombre poster sur le net, ils sont presque dans le même ordre, le fait est que la plupart sont plus courts.

    Je peux publier 5 autres articles dans la semaine et vous pouvez en trouver d'autres similaires ou identiques, la raison? ubuntu a le plus de forums / blogs sur le net.

    Je ne pense en aucun cas qu'il y aura un dilemme, et, si les administrateurs envisagent de le supprimer, cela ne m'offenserait pas ou ne me dérangerait pas du tout, je respecte les règles et ce qui suit, parmi mes notes 8 que je ne les ai pas dans l'ordre) Je cherche à ajouter quelque chose pour éviter les coïncidences.

    salutations

    1.    Krel dit

      Ce n'est un mystère pour personne que tout au plus 10% du contenu généré sur le Web soit nouveau. Avec lequel les 90 autres sont du contenu dupliqué, renouvelé ou sauvé, et je ne dis pas que cela est moins important, au contraire, c'est une forme de diffusion des connaissances.

      Cependant, là où je m'arrête, c'est autre chose. Lorsque vous avez un blog de ce type, il y a une motivation personnelle pour aider et peut-être même recevoir une reconnaissance pour cela. En même temps, je suis sûr que la plupart de ceux qui écrivent du contenu sur le Logiciel Libre sont d'accord avec l'idée de partage. Cependant, n'oublions pas que même les licences les plus nobles comme BSD demandent une reconnaissance.

      En outre, les références sont un moyen par lequel certains moteurs de recherche comme Google améliorent le positionnement d'un site Web. Je dis simplement, puisque le matériel a été utilisé comme un minimum de gratitude, je ferais référence à ce travail.

      Je trouve que c'est super que vous partagiez, mais que perdez-vous à faire une référence ? Pensez simplement que si à partir d'un autre blog avec un meilleur positionnement que celui-ci, le contenu de celui-ci serait dupliqué. desdelinux Sans y faire référence, ils finiraient par enterrer ce blog.

      Hatteras l'a publié il y a 10 jours et à moins qu'il ne l'ait sorti de votre cahier ou que vous soyez Luis Puente, je ne peux pas expliquer ce que vous me dites, c'est que presque tout est textuel. Peu probable mais pas impossible.

      Mais rien, que ce genre de chose arrive. Et je ne sais pas, pour l'éthique personnelle et pour la collaboration avec un autre collègue, je me réfère à lui. Cela dépend de vous, je ne pense pas qu'Hatteras prenne cela dans le mauvais sens, bien au contraire.

      1.    msx dit
  7.   Celui d'avant dit

    Hmm… j'ai fait un jj if = file.iso de = / media / disque dur… par erreur 😛
    n'importe quel moyen de récupérer des fichiers à partir du disque dur ???

    1.    animé dit

      Vous pouvez utiliser Testdisk

    2.    merlin le debianite dit

      Un ami m'est arrivé peut-être avec testdisk ou avec une distribution en direct spécialisée pour récupérer des données. Ma recommandation de faire une sauvegarde pour la prochaine fois depuis l'utilisation de cette commande est quelque chose de délicat dans mes jours de débutant pour formater le disque dur entier sans le vouloir et maintenant pour bien redémarrer …… Inutile de dire que ni le grub n'a commencé.

  8.   Raul dit

    Quelqu'un peut-il me dire quelle commande utiliser pour voir la progression de la copie avec la commande dd, ce que je veux dire, c'est voir une barre de progression avec le% qui a été copié.

    SLD

    1.    Juillet dit

      Ami! en ajoutant la commande pv. Dans ce même billet, il le dit presque au début et explique comment l'utiliser. Relisez-le

  9.   pedro dit

    en utilisant cette commande:
    dd si = / dev / sdc | bzip2> /media/Elements/iso.gz
    J'ai réussi à créer une image iso d'un disque 16 Go et à l'enregistrer sur un disque 400 Go.
    Mais je ne sais pas quelle serait la commande pour restaurer cette image sur le disque d'origine de 16 Go ou sur un autre de même capacité

  10.   Luis Rodriguez dit

    une question

    utilisez cette commande pour
    pour n dans {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
    pour un disque de 2 To
    puis je reste dans la console quelque chose comme ça
    >
    Dois-je exécuter une autre commande ou combien de temps le processus peut-il prendre?

    merci et continuez

    1.    Jazb dit

      Il y a une faute de frappe dans le for… manquant à la fin de la ligne «; done »est resté« pendant n dans {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; terminé "

  11.   Henry Salazar dit

    très bon article… .. Je vais le mettre en pratique… salutations mon pote

  12.   Marcos_tux dit

    Très utile, cela m'a beaucoup aidé merci

  13.   EDFR dit

    Bon Alf. Merci pour l'info.

    Une question. Existe-t-il un moyen de ne copier qu'une partie du disque source? Le cas est que, si j'ai un disque de 120 Go dans lequel seulement 25 Go est utilisé et que je veux faire une copie sur un disque de 40 Go, je ne serais intéressé que par la copie de l'espace utilisé (25 Go), existe-t-il un moyen avec cette commande?
    Merci d'avance.

    1.    Yukiteru dit

      Il serait préférable que vous utilisiez rsync, avec la commande rsync -av / path / to / origin / path / to / destiny, vous sauvegarderiez déjà toutes vos autorisations avec leurs autorisations correspondantes.

    2.    Yukiteru dit

      Je voulais dire: "tous vos fichiers avec leurs autorisations correspondantes"

  14.   FOXSPY dit

    Cher, est-ce que quelqu'un sait pourquoi en occupant la commande dd, elle n'atteint que 4.2 Go et indique que le fichier est très volumineux? Il s'agit d'une image d'un disque de 250 Go et va vers un disque externe de 1 To.

    sudo dd if = / dev / sda | pv | dd of = / home / fox / backup.iso

    1.    Ravisseur dit

      L'erreur 4 Go vous le donne parce que vous essayez de faire une sauvegarde dans une partition avec fs FAT16

  15.   Berna dit

    Quel bon blog. Entrée très utile. J'avais déjà vu les usages de cette commande ailleurs, mais ils n'expliquaient rien du tout. Je vous remercie.

  16.   Carlos Torres dit

    bonjour j'ai une machine d'injection dans laquelle le programme a été perdu depuis qu'ils ont remplacé la pile bios, nous n'avons pas de sauvegarde mais nous avons une autre même machine, elle n'a qu'une disquette et un port série et parallèle, comment puis-je faire une sauvegarde de cette machine pour le charger dans l'autre, j'espère que vous pourrez m'aider merci

  17.   ernesto dit

    Je veux juste copier une partition sans démarrer à partir du CD LIVE. Par exemple, j'ai un disque avec / dev / sda1, / dev / sda5, / dev / sda6 et je veux faire une copie vers / dev / sda5 à partir d'un autre disque / dev / sdb1

    la commande est dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????

  18.   Pedro Lobato dit

    Bonjour, comment allez-vous. J'habite également à Guadalajara.
    Votre article sur la commande DD est très intéressant. Je veux essayer quelques distributions Linux, en particulier Archlinux, mais je n'ai pas pu utiliser la commande DD et copier l'ISO d'Archilinux que j'ai déjà téléchargé, sur une clé USB. Je ne sais pas si vous pouvez me passer une coche pour commencer. Merci, Pedro lobato

  19.   vainqueur dit

    Parce que quand un iso est enregistré avec la commande "dd" cela ne fonctionne que pour le démarrage sur certains PC?
    Exp. J'ai 2 ordinateurs portables et aucun d'entre eux ne démarre l'iso d'une distribution Linux; mais au contraire, il démarre sur un ancien PC de bureau avec un disque inactif

    1.    seb dit

      La meilleure chose à faire est de jouer en toute sécurité en utilisant unetbootin, avec dd, je me suis également demandé pourquoi parfois cela ne fonctionne pas.

      1.    animé dit

        Je ne pense pas que cela dépend de DD mais d'ISO. La même chose se produit avec Unetbootin, cela ne fonctionne pas bien avec toutes les distributions.

  20.   vainqueur dit

    Parfois, cela fonctionne sur tous les PC, mais vous devez ajouter le mbr et syslinux à l'usb au processus; mais c'est long et fastidieux.
    La partie facile de l'annulation du démarrage

    Attention: ce n'est pas l'iso ou le dd pour moi, c'est la façon dont vous l'enregistrez.

  21.   danny dit

    J'ai un doute si j'utilise cette commande:
    sudo dd if = / dev / zéro de = / dev / diskdrive
    Au lieu de cela, le formatage de bas niveau est le même ou cela prend plus de temps:
    sudo dd if = / dev / zero of = / dev / diskdrive bs = 1M ..

  22.   arg0s dit

    La commande dd peut-elle être utilisée pour supprimer un fichier spécifique?

    par exemple,

    dd if = / dev / urandom of = / home / myfile delete

  23.   arg0s dit

    avec bs = 1M ça devient plus rapide

  24.   alex dit

    Et si je vais faire une copie exacte d'un disque à un autre, avec toutes ses partitions (swap, sda ...) et les deux disques identiques, mais l'un est sur le PC et l'autre sur un NAS sur le réseau ????
    merci

  25.   Gerardo dit

    Un commentaire, je l'utilise avec status = progress à la fin et je n'ai pas besoin de pv, donc debian fonctionne très bien pour que je puisse voir la progression.
    Et deuxièmement, y a-t-il un moyen d'obtenir uniquement les données et non l'unité entière, car s'il s'agit d'un disque de 2 To et que je n'utilise que 100 Go, j'ai besoin de tout cet espace. Existe-t-il un moyen de sauvegarder simplement ces 100 Go? Et quand je le passe à un autre support, il pourrait s'agir d'un disque plus petit, peut-être l'un des 500?

  26.   Alexander dit

    Aidez-moi !!!
    Exécutez la commande
    dd if = cbpp-9.0-amd64-20170621.iso de = / dev / sdb

    tout va bien ... mais maintenant je veux utiliser l'usb comme unité de stockage et ...

    L'USB n'est pas monté, il n'apparaît même pas dans GParted.

    Quelqu'un sait-il ce que je peux faire.

    PS: quel serait le meilleur programme pour récupérer des informations à partir de disques et CD DVD….

    1.    anonyme dit

      vous devez refaire le test de partition avec fdisk