Ús de la comanda dd

La comanda dd (Dataset Definition), és una eina senzilla, útil, i sorprenentment fàcil d'utilitzar; amb aquesta eina es pot fer el mateix, sobre dispositius: discs i particions, que amb programes comercials com Norton Ghost, en Windows o lliures com Clonezilla, en Linux, amb només una petita línia d'ordres.

Sintaxi Bàsica:

La sintaxi mes bàsica per a l'ús de la comanda dd, seria aquesta:

sudo dd if=origen of=destino

on if significa "input file = arxiu d'entrada", És a dir, el que es vol copiar i of significa "output file = arxiu de sortida", És a dir, l'arxiu destí (on es van a copiar les dades);origen i destinació poden ser dispositius (lectora de CD o DVD, disc dur, diskettera, pendrive, partició, etc.), arxiu de còpia de seguretat o imatge de disc, etc, però no carpetes o subcarpetes.

Per a l'ús sense problemes d'aquesta comanda, el primer sempre és tenir clar com es diuen les particions / discos durs en Linux (/ dev / sda1 per exemple; / dev deriva device = dispositiu, en anglès). per saber el disc / partició d'origen i el de destinació, cosa que vam esbrinar fàcilment amb la comanda sudo fdisk -el amb algun programa gràfic de particions com gparted. Tota la informació sobre la comanda dd, es pot consultar amb la comanda man dd i info dd,

S'ha d'utilitzar aquesta comanda amb precaució, i comprovant sempre l'ordre i nom dels discos / particions, perquè el mateix que es clona un disc, ho esborra en un vist i no vist.

Sintaxi amb la comanda pv: Utilitza la comanda dd amb la sintaxi anterior té un petit inconvenient, ja que és una ordre molt reservat - no dóna informació -, ja que a l'executar-lo, l'indicador de la terminal queda immòbil, de manera que no sabem que és el que està passant i quant de temps falta perquè acabi de executar-se. Aquest petit inconvenient es pot solucionar afegint la comanda PV, (*) - el qual actua com una canonada de terminal que mesura les dades que passen a través d'ella- a la sintaxi de la comanda dd, de manera que ara la sintaxi seria:

dd if=origen |pv|dd of=destino

Com a resultat obtindríem al terminal una mena de barra de progrés, la informació sobre bytes transferits, el temps que porta executant i la taxa de transferència, tot això en temps real.

(Alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 1,630GB 0:21:30 [1,12MB / s] [

A més a l'acabar ens mostra estadístiques de la taxa de transferència, el total de bytes transferits i el temps total que va trigar a transferir totes les dades.

(Alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 registres llegits <=> 10530816 + 0 registres escrits 5391777792 bytes (5.4 GB) copiats, 3873,48 s, 1,4 MB / s 5,02GB 1:04:33 [1,33MB / s] [<=> 10530816 + 0 registres llegits <=> 10530816 + 0 registres escrits 5391777792 bytes (5.4 GB) copiats, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤

(*) Comprovar abans d'executar qualsevol línia de comandaments amb aquesta segona sintaxi, que tenim instal·lat al sistema el paquet PV, o instal·lar-lo si no ho tinguéssim: ambdues coses amb Synaptic.

Anem a veure alguns exemples pràctics i opcions d'aquesta comanda (en la seva versió amb el truc explicat anteriorment amb la comanda pv):

A) Sobre discs durs i particions:

= Clonar un disc dur:

Amb això clonaríamos el disc hda a hdb. (Discs IDE):

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

Amb això clonaríamos el disc sda a sdb. (Discs SATA):

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

Amb l'opció bs = 1 M, s'aconsegueix que tant la lectura com l'escriptura es faci en blocs d'1 megabyte, (almenys, seria més lent però més segur, i amb mes ens arrisquem a perdre dades pel camí).

Cal tenir en compte que d'aquesta manera es grava el disc "tal qual", MBR, taula de particions, espai buit, etc ..., per la qual cosa només podràs gravar en un disc de la mateixa o més gran.

= Gravar només la primera partició (hda1) del disc d'origen en el disc (hdb) de destinació:

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

= Gravar el disc complet (hda) a la primera partició (hdb1) del disc de destinació:

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

= Crear una imatge - pot ser bin o iso - del disc dur (hda), al directori / home:

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

= Elimina totalment la informació d'un disc: per a això, omple el disc amb caràcters aleatoris, cinc vegades. No va a quedar ni rastre d'informació en el disc:

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

= Esborrar qualsevol partició i disc complet de qualsevol dispositiu:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Esborrat de disc complet)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Esborrat de partició de disc)

on: x és el disc a esborrar, a és la partició a esborrar

Aquesta operació és molt útil per esborrar completament qualsevol partició, a més les dades que s'esborraran no es poden recuperar, per tant és un esborrat a baix nivell i molt segur, molt útil per exemple per quan els pendrives se'ns s'infecten de virus amb el nostre volgut windows.

B) Sobre un CD / DVD

= Crear / Muntar una imatge .iso d'un CD (o DVD)

Per crear la imatge .iso d'un CD en el directori / home:

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

Per muntar la imatge .iso del nou CD:

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

= Restauració d'un DVD ratllat (Això no recupera tot el DVD, en aquest cas, només els sectors llegibles). Serveix també per a discos durs defectuosos:

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

L'opció noerror, serveix per obviar els errors de lectura en qualsevol situació.

C) Sobre MBR i VBS:

= Copia / Restaurar el Master Boot Record (MBR):

Per copiar el MBR:

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

Per restaurar el MBR:

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

= Netejar nostre MBR i la taula de particions:

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

= Neteja el MBR però no toca la taula de particions, (molt útil per esborrar el GRUB sense perdre dades en les particions):

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

= Copia / Restaurar el Volume Boot Sector (VBS):

Per copiar el VBS:

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

Per restaurar el VBS:

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

D) Altres:

= Gravar una imatge del disc al nostre directori / home saltant-nos els errors del disc (molt útil per a discs que s'estan morint):

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

= Crear un arxiu buit d'1 Mb:

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

= Crear un arxiu swap de 2Gb:

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

= Converteix totes les lletres en majúscules:

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

Utilitza la comanda dd amb un programa amb entorn gràfic: Gdiskdump, és un entorn gràfic per aquesta comanda dd que ens facilita la tasca de clonar particions o discos, D'una forma ràpida i senzilla. Es pot descarregar des de la pàgina https://launchpad.net/gdiskdump/ Un cop l'obrim, amb permisos de root - suo gdiskdump -, veiem que el programa és molt fàcil d'usar, ja que només hem de dir-li la partició o disc a clonar (Format d'entrada) i el seu destí (Format de Sortida).


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   sieg84 va dir

    gairebé em faig diabètic amb el mal ús de la comanda dd.
    per cert, com seria la diferència amb dd_rescue ¿?

    1.    ever va dir

      ddrescue per defecte no s'atura en els errors de lectura i intenta per diversos mitjans recuperar la informació il·legible.

    2.    Sheko va dir

      hahahha jo també faci servir molt malament la comanda dd, és moltíssim més potent del que jo creia.

  2.   Rots87 va dir

    Comanto que jo crec que tot usuari de fitxers en algun moment ús

  3.   Alf va dir

    @ Sieg84, la diferència està en que el dd s'interrompia amb algun error de lectura o d'el dispositiu en aquest cas no passés això ja que el bloc danyat el llegirà un nombre determinat de vegades i continués amb el següent, també brinda l'avantatge que podem executar diverses vegades sobre la mateixa imatge i no comencés de zero sinó que tractés de completar la mateixa.

    Cal esmentar que dd_rescue mai ho he utilitzat.

    1.    merlin el debianita va dir

      Alf existirà alguna GUI feta en qt per a KDE que usi aquesta comanda? o m'he de resignar.?

      1.    juliol va dir

        Gdiskdump és mes que una GUI per aquesta comanda (aquesta basat en el) i encara que no sé si ho van fer en qt (crec que no) gairebé segur et serveix a KDE

    2.    sieg84 va dir

      gràcies per l'aclariment.
      només he utilitzat dd_rescue per copiar ISO als USB (mes que res per que a la wiki d'openSUSE aixi ho tenien).
      dd_rescue tu.iso / dev / sdX
      el que m'agrada és que mostra una barra de progrés:
      http://box.jisko.net/i/110db781.png

  4.   krel va dir

    Alf:
    Fa poc vaig veure publicat aquest mateix post al Bloc de Hatteras. És probable que el no es prengui a malament això però jo que sé, com a mínim per cortesia estaria bé referenciar-lo. Així també el guanya en posicionament web.

    No vull generar dilema amb això però a simple vista l'article em sembla un 95% idèntic excepte per les captures de terminal que les has adaptat. Fins i tot el va esmentar les seves fonts.

  5.   merlin el debianita va dir

    Interessant admeto que | pv | no el coneixia.

    Krel crec que la font està en wiki d'ubuntu o de fitxers salutacions.

  6.   Alf va dir

    @krel, la cosa de linux és la següent:

    Al llarg de la meva andanza en aquest món he llegit i recopilat coses, tinc un quadern amb més de 400 post que vaig posar en ubuntu Mèxic que va ser la comunitat on més contribuiran en els meus inicis, malauradament les coses poden repetir-se, si revises la gran quantitat de post a la xarxa, estan gairebé en el mateix ordre, la cosa és que la majoria són mes curts.

    Puc publicar altres 5 post a la setmana i pots trobar altres semblants o iguals, ¿el motiu? Ubuntu té la major quantitat de fòrums / blogs a la xarxa.

    De cap manera crec que hi hagi dilema, i, si els administradors consideren el esborrar-ho, per res em ofendria ni molestaria, m'atinc a les normes i al que segueix, entre els meus apunts 8que no els tinc en ordre) estic buscant afegir alguna cosa per evitar la coincidència.

    Salutacions

    1.    krel va dir

      Per a ningú és un misteri que com a molt només el 10% de l'contingut que es genera a la xarxa és nou. Amb la qual cosa l'altre 90 és contingut duplicat, renovat o rescatat, i no dic que això sigui menys important, tot el contrari, és una forma de disseminació de el coneixement.

      No obstant això on jo m'aturo és en una altra cosa. Quan es té un bloc d'aquest tipus ha una motivació personal per ajudar i fins potser rebre un reconeixement per això. Al seu torn estic segur que la majoria dels que escriuen continguts sobre el Programari lliure estan d'acord amb la idea de compartir. No obstant això, no oblidem que fins a les llicències més nobles com la de BSD demanen el reconeixement.

      Així mateix, les referències és una forma per les quals alguns cercadors com google milloren el posicionament d'una web. Només dic, ja que el material va ser utilitzat com a mínim d'agraïment jo referenciaría aquest treball.

      Em sembla genial que comparteixis però, què perds per fer una referència? Només pensa si des d'un altre bloc amb millor posicionament que aquest es dupliquessin els continguts de desdelinux sense referenciar-ho, al final sepultarien aquest bloc.

      Hatteras ho va publicar fa 10 dies i llevat que l'hagi tret de la teva quadern o la teva siguis luis pont no m'explico el que em comentes, és que gairebé tot és textual. Poc probable però no impossible.

      Però res, que aquest tipus de coses passen. I no sé, jo per ètica personal i per col·laborar amb un altre col·lega el referenciaría. Ja això queda al vostre criteri, tampoc crec que Hatteras es prengui això a malament, tot el contrari.

      1.    MSX va dir
  7.   eldeants va dir

    Hmm ... Vaig fer un dd if = arxiu.iso of = / mitjana / discoduro ... per error 😛
    alguna forma de recuperar arxius des del disc dur ???

    1.    ILAV va dir

      Podeu fer servir TestDisk

    2.    merlin el debianita va dir

      m'ha passat amic potser amb TestDisk o amb una distro live especialitzada a rescatar dades. La meva recomanació fer un backup per a pròxima ja que utilitzar aquest comando és una cosa delicat en els meus temps de novell formatie tot el disc dur sense voler i ara de reiniciar doncs ...... no cal dir que ni el grub arrenco.

  8.   Raul va dir

    Algú em pot dir que comanda utilitzar per veure el progrés de copiat amb la comanda dd, al que em refereixo és veure una barra de progrés amb el% que porta copiant.

    Slds

    1.    juliol va dir

      Compa! afegint la comanda pv. En aquest mateix post ho diu gairebé a el principi i t'explica com uasarlo. Llegeix-lo una altra vegada

  9.   pedro va dir

    mitjançant aquesta comanda:
    dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
    he aconseguit fer una imatge iso d'un disc de 16 Gb i guardar-lo en un disc de 400GB.
    Però no es com seria la comanda per restaurar aquesta imatge en el disc original de 16 GB o en un altre de la mateixa capacitat

  10.   Luis Rodríguez va dir

    una pregunta

    utilitzeu aquesta comanda per
    for n in {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
    per a un disc de 2TB
    després em quedo a la consola alguna cosa asi
    >
    he de executar un altre ordre o com es pot demorar el procés?

    gràcies i segueixin endavant

    1.    Jazb va dir

      Hi ha un error de mecanografia al for ... falta a la fi de la línia «; done »quedat« for n in {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; done »

  11.   henry salazar va dir

    molt bon article ... ..voy a posar-ho en pràctica ... salutacions cuate

  12.   Marcs_tux va dir

    Molt útil, em va servir molt gràcies

  13.   EDFR va dir

    Bones Alf. Gràcies per la info.

    Una pregunta. Ha alguna manera de copiar només una part del disc origen ?. El cas és, si tinc un disc de 120Gb en el qual només s'està utilitzant 25Gb i vull fer una còpia a un disc de 40Gb, només m'interessaria copiar l'espai utilitzat (25Gb), Hi ha alguna manera amb aquesta comanda?
    Gràcies per endavant.

    1.    Yukiteru va dir

      Et convindria més fer servir rsync, amb la comanda rsync -Av / path / to / origin / path / to / destiny ja estaries donant suport tots els teus permisos amb els seus corresponents permisos.

    2.    Yukiteru va dir

      Vaig voler dir: «tots els teus arxius amb els seus corresponents permisos»

  14.   FOXSPY va dir

    Benvolguts, algun sap perquè a l'ocupar comandament dd, arriba només a 4.2GB i indica que l'arxiu és molt gran? És una imatge d'una disc de 250GB i va a un disc extern de 1TB.

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

    1.    RAPTOR va dir

      l'error dels 4Gb t'ho està donant perquè aquestes intentant fer un backup en una partició amb fs FAT16

  15.   Berna va dir

    Quin bon bloc. Molt útil entrada. Ja havia vist en altres costats els usos d'aquesta comanda, però de plànol no explicaven res de res. Gràcies.

  16.   carlos torres va dir

    hola tinc una maquina d'inyeccion en la qual es va perdre el programa ja que van reemplaçar la pila de la bios, no tenim suport però tenim una altra màquina igual, només compta amb floppy i port serial i paral·lel, com puc fer fer un suport d'aquesta màquina per carregar-lo en la altre, espero em pugui ajudar gràcies

  17.   ernesto va dir

    només vull copiar una partició sense començar des LIVE CD. Per ejemplo.tengo un disc amb / dev / sda1, / dev / sda5, / dev / sda6 i vull fer una còpia en / dev / sda5 des d'un altre disc / dev / sdb1

    la comanda és dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????

  18.   Pedro Lobato va dir

    Hola com aquestes. Jo també visc a Guadalajara.
    El teu article sobre la comanda DD és molt interessant. Jo vull provar algunes distribucions Linux, específicament Archlinux, però no he aconseguit fer servir la comanda DD i copiar la ISO de Archilinux que ja descarregui, en una memòria USB. No se si em puguis passar algun tick per poder arrencar amb això. Gràcies, Pere lobato

  19.   Vencedor va dir

    Perquè quan es grava una iso amb el comnado «dd» només serveix per bootear en algunes PC?
    Ejp. tinc 2 laptos i en cap d'ella bootea la iso de cap distribució linux; però a canvi SI bootea en una vella PC de taula amb disc aneu-li

    1.    SEB va dir

      El millor és anar-se'n a la segura usant UNetbootin, amb dd també m'he quedat amb la interrogant de perquè aa vegades no funciona.

      1.    ILAV va dir

        No crec que depengui de DD sinó de l'ISO. El mateix succeeix amb UNetbootin, no funciona bé amb totes les distribucions ..

  20.   Vencedor va dir

    De vegades funciona en totes les pc però cal afegir a l'procés el mbr i el syslinux a la usb; però això és una cosa llarg i tediós.
    La part fàcil el unetbooting

    Ull: no és la iso ni el dd per a mi és la forma de com la graves.

  21.   danny va dir

    tinc un dubte si utilitzo aquesta comanda:
    suo dd if = / dev / zero of = / dev / unidaddedisco
    en comptes d'aquest el format a low level, és el mateix o és mes trigat que aquest:
    suo dd if = / dev / zero of = / dev / unidaddedisco bs = 1M ..

  22.   Arg0s va dir

    Es pot utilitzar la comanda dd per esborrar un fitxer específic?

    per exemple,

    dd if = / dev / urandom of = / home / miarchivoaborrar

  23.   Arg0s va dir

    amb bs = 1M es fa més ràpid

  24.   alex va dir

    i si vaig a fer una còpia exacta d'un disc a un altre, amb totes les seves particions (swap, sda ...) i tots dos discos iguals, però un està al PC i l'altre en un NAS per xarxa ????
    gràcies

  25.   Gerardo va dir

    Un comentari, jo el faig servir amb status = progress a al final i no necessito de PV, així em funciona molt bé debian per veure el progeso.
    I la segona, hi ha alguna manera de treure només les dades i no tota la unitat, ja que si és un disc de 2TB i sol ús 100 GB requereixo de tot aquest espai. Hi ha alguna manera de només recolzar aquests 100 GB? i quan ho passi a un altre mitjà pugui ser un disc més petit potser un 500?

  26.   Alejandro va dir

    Ajuda !!!
    Feu la comanda
    dd if = cbpp-9.0-amd64-20170621.iso of = / dev / sdb

    tot bé ... però ara vull tornar a fer servir la usb com a unitat d'emmagatzematge i ...

    No es munta la USB, ni tan sols apareix en GParted.

    algú sap que puc fer.

    PD: quin seria el millor programa per recuperar informació de discos duscos i CD DVD ....

    1.    anònim va dir

      has de re particions prova amb fdisk