Använda dd-kommandot

Kommandot dd (Dataset Definition) är ett enkelt, användbart och förvånansvärt lättanvänt verktyg. Med det här verktyget kan du göra detsamma på enheter: diskar och partitioner, som med kommersiella program som Norton Ghost, i Windows eller gratisprogram som CloneZilla, på Linux, med bara en kort kommandorad.

Grundläggande syntax:

Den mest grundläggande syntaxen för att använda kommandot dd skulle vara den här:

sudo dd if=origen of=destino

var om betyder "inmatningsfil = inmatningsfil“Det vill säga vad du vill kopiera och av betyder "utdatafil = utdatafil”, Det vill säga destinationsfilen (där data kommer att kopieras);ursprung och Målet kan vara enheter (CD- eller DVD-läsare, hårddisk, diskett, pendrive, partition, etc.), säkerhetskopieringsfil eller diskavbildning etc., men inte mappar eller undermappar.

För smidig användning av detta kommando är det första att alltid vara tydlig med vad partitioner / hårddiskar heter i Linux (/ dev / sda1 till exempel; / dev härrör från enhet = enhet, på engelska). att känna till källan och destinationsskivan / partitionen, något som vi enkelt kan ta reda på med kommandot sudo fdisk -lo med något grafiskt partitionsprogram som gparted. All information om dd-kommandot kan konsulteras med kommandot man dd och info dd,

Det här kommandot bör användas med försiktighet och alltid kontrollera ordningen och namnet på diskarna / partitionerna, för precis som en disk är klonad raderar den den snabbt.

Syntax med pv-kommandot: Att använda dd-kommandot med föregående syntax har en liten nackdel, eftersom det är ett mycket reserverat kommando - det ger inte information - för när det körs förblir terminalprompten orörlig, så vi vet inte vad är vad som händer och hur mycket tid som är kvar för att det ska slutföras. Detta mindre besvär kan lösas genom att lägga till kommandot pv, (*) - som fungerar som ett terminalrör som mäter data som passerar genom det - till syntaxen för dd-kommandot, så att nu syntaxen skulle vara:

dd if=origen |pv|dd of=destino

Som ett resultat skulle vi få ett slags förloppsindikator i terminalen, informationen om överförda byte, tiden den har körts och överföringshastigheten, allt i realtid.

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

Dessutom visar den oss statistik över överföringshastigheten, den totala byten som överförts och den totala tid det tog att överföra all data när den är klar.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 poster läst <=> 10530816 + 0 poster skrivna 5391777792 byte (5.4 GB) kopierade, 3873,48 s, 1,4 MB / s 5,02 GB 1:04:33 [1,33 MB / s] [<=> 10530816 + 0 poster lästa <=> 10530816 + 0 poster skrivna 5391777792 byte (5.4 GB) kopierade, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤

(*) Kontrollera innan du kör någon kommandorad med denna andra syntax, att vi har pv-paketet installerat på systemet, eller installera det om vi inte har det: båda med Synaptic.

Låt oss se några praktiska exempel och alternativ för detta kommando (i sin version med tricket förklarat ovan med pv-kommandot):

A) Om hårddiskar och partitioner:

= Klona en hårddisk:

Med detta skulle vi klona hda-skivan i hdb. (IDE-skivor):

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

Med detta skulle vi klona SDA-skivan i SDB. (SATA-skivor):

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

Med alternativet bs = 1M uppnås att både läsning och skrivning sker i 1 megabyte block, (mindre skulle det vara långsammare men säkrare, och med mer riskerar vi att förlora data på vägen).

Tänk på att på detta sätt spelas in skivan "som den är", MBR, partitionstabell, tomt utrymme, etc ... så att du bara kan spela in på en skiva av samma eller större storlek.

= Skriv bara den första partitionen (hda1) på källskivan till destinationsskivan (hdb):

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

= Bränn hela disken (hda) till den första partitionen (hdb1) på destinationsskivan:

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

= Skapa en bild - kan vara bin eller iso - från hårddisken (hda), i / home-katalogen:

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

= Radera fullständigt information på en skiva: för att göra detta, fyll skivan med slumpmässiga tecken, fem gånger. Det finns inte ett spår av information på disken:

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

= Radera någon partition och hela disken från vilken enhet som helst:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Radering av fullständig disk)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Radering av diskpartition)

där: x är skivan som ska raderas, a är partitionen som ska raderas

Den här åtgärden är mycket användbar för att helt radera någon partition, dessutom kan data som kommer att raderas inte återställas, därför är det en lågnivå och mycket säker radering, mycket användbar till exempel när pendrives infekteras med virus med våra kära windows .

B) På en CD / DVD

= Skapa / montera en .iso-bild från en CD (eller DVD)

Så här skapar du .iso-bilden av en CD i / home-katalogen:

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

Så här monterar du .iso-bilden från CD: n:

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

= Återställ en repad DVD (Detta återställer inte hela DVD: n, i detta fall endast de läsbara sektorerna). Det är också lämpligt för defekta hårddiskar:

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

Noerror-alternativet används för att undvika läsfel i alla situationer.

C) Om MBR och VBS:

= Copy / Restore Master Boot Record (MBR):

Så här kopierar du MBR:

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

Så här återställer du MBR:

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

= Rengör vår MBR och partitionstabell:

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

= Rensar MBR men rör inte partitionstabellen, (mycket användbart för att radera GRUB utan att förlora data om partitionerna):

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

= Copy / Restore Volume Boot Sector (VBS):

Så här kopierar du VBS:

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

Så här återställer du VBS:

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

D) Andra:

= Bränn en skivavbildning till vår / hemkatalog, hoppa över skivfel (mycket användbart för skivor som är döende):

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

= Skapa en tom 1 Mb-fil:

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

= Skapa en 2Gb-swap-fil:

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

= Konvertera alla bokstäver till versaler:

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

Använd dd-kommandot med ett grafiskt miljöprogram: Gdiskdump är en grafisk miljö för detta dd-kommando som underlättar uppgiften klonpartitioner eller diskar, snabbt och enkelt. Den kan laddas ner från sidan https://launchpad.net/gdiskdump/ När vi väl har öppnat det, med rootbehörigheter - sudo gdiskdump - ser vi att programmet är väldigt enkelt att använda, eftersom vi bara behöver berätta partitionen eller disken som ska klonas (Input Format) och dess destination (Output Format).


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   sieg84 sade

    Jag fick nästan ett diabetiskt missbruk av dd-kommandot.
    förresten, vad skulle det vara skillnaden med dd_rescue?

    1.    någonsin sade

      ddrescue stoppar som standard inte vid läsfel och försöker på olika sätt att återställa oläslig information.

    2.    Sheko sade

      hahahha Jag använde också dd-kommandot väldigt dåligt, det är mycket kraftfullare än jag trodde.

  2.   Rötter87 sade

    Jag kommenterar att jag tror att varje ärkeanvändare någon gång använde

  3.   Alf sade

    @ sieg84, skillnaden är att dd avbröts med något läs- eller enhetsfel i detta fall kommer detta inte att hända eftersom det skadade blocket kommer att läsa det ett visst antal gånger och fortsätta med nästa, det ger också fördelen att vi kan köra den flera gånger på samma bild och den börjar inte från början utan försöker slutföra den.

    Det är värt att nämna att dd_rescue Jag har aldrig använt det.

    1.    Debianiten Merlin sade

      Om det finns något GUI i qt för KDE som använder detta kommando? eller måste jag avgå.?

      1.    Juli sade

        Gdiskdump är mer än ett GUI för detta kommando (det är baserat på det) och även om jag inte vet om de gjorde det i qt (tror jag inte) fungerar det nästan säkert för dig i KDE

    2.    sieg84 sade

      tack för klargörandet.
      Jag har bara använt dd_rescue för att kopiera ISO till USB (främst för att de i openSUSE-wiki hade det).
      dd_rescue tu.iso / dev / sdX
      vad jag gillar är att det visar en förloppsindikator:
      http://box.jisko.net/i/110db781.png

  4.   krel sade

    Alfa:
    Jag såg nyligen samma inlägg publicerat på Hatteras-bloggen. Det är troligt att han inte tar detta dåligt men jag vet inte, åtminstone som en artighet skulle det vara bra att hänvisa till det. Så han vinner också inom webbpositionering.

    Jag vill inte skapa ett dilemma med detta, men vid första anblicken verkar artikeln 95% identisk förutom de terminalskärmbilder som du har anpassat. Han nämnde även sina källor.

  5.   Debianiten Merlin sade

    Intressant jag erkänner att | pv | kände inte honom.

    Krel Jag tror att källan finns i ubuntu wiki eller ärkehälsningar.

  6.   Alf sade

    @krel, linux är det här:

    Under hela min resa i den här världen har jag läst och samlat saker, jag har en anteckningsbok med mer än 400 inlägg som jag placerade i Ubuntu Mexiko, som var det samhälle där jag bidrog mest under mina första dagar, tyvärr kan saker upprepas, om du granskar den stora mängden inlägg på nätet, de är nästan i samma ordning, saken är att de flesta är kortare.

    Jag kan publicera ytterligare 5 inlägg under veckan och du kan hitta andra liknande eller samma, anledningen? ubuntu har flest forum / bloggar på nätet.

    Jag tror inte på något sätt att det kommer att finnas ett dilemma, och om administratörerna överväger att radera det skulle det inte störa eller stör mig alls, jag följer reglerna och vad som följer, bland mina anteckningar 8 som jag inte gör ha dem i ordning) Jag vill lägga till något för att undvika slump.

    hälsningar

    1.    krel sade

      Det är inget mysterium för någon att högst bara 10% av innehållet som genereras på webben är nytt. Med vilka de andra 90 innehållet dupliceras, förnyas eller räddas, och jag säger inte att detta är mindre viktigt, tvärtom är det en form av kunskapsspridning.

      Men där jag stannar är något annat. När du har en blogg av denna typ finns det en personlig motivation att hjälpa till och kanske till och med få erkännande för den. Samtidigt är jag säker på att majoriteten av dem som skriver innehåll om fri programvara håller med om tanken att dela. Låt oss dock inte glömma att även de ädla licenserna som BSD ber om erkännande.

      Referenserna är också ett sätt på vilket vissa sökmotorer som google förbättrar placeringen av en webbplats. Jag säger bara, eftersom materialet användes som ett minimum av tacksamhet, skulle jag hänvisa till det arbetet.

      Jag tycker det är jättebra att du delar med dig, men vad förlorar du på att göra en referens? Tänk bara om innehållet i denna skulle dupliceras från en annan blogg med bättre positionering än den här. desdelinux Utan att referera till det skulle de till slut begrava den här bloggen.

      Hatteras publicerade den för tio dagar sedan och om han inte har tagit den ur din anteckningsbok eller om du är Luis Puente, kan jag inte förstå vad du säger, det är att nästan allt är textmässigt. Osannolikt men inte omöjligt.

      Men ingenting, att den här typen av saker händer. Och jag vet inte, för personlig etik och för samarbete med en annan kollega skulle jag hänvisa till honom. Det är upp till dig, jag tror inte heller att Hatteras tar det på fel sätt, snarare tvärtom.

      1.    MSX sade

        Det är sant, det är en sann kopia av det här inlägget: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/

  7.   Den tidigare sade

    Hmm ... Jag gjorde en dd if = file.iso av = / media / hårddisk ... av misstag 😛
    något sätt att återställa filer från hårddisken ???

    1.    livlig sade

      Du kan använda Testdisk

    2.    Debianiten Merlin sade

      En vän har hänt mig kanske med testdisk eller med en specialiserad live distro för att rädda data. Min rekommendation att göra en säkerhetskopia nästa gång eftersom jag använder det kommandot är något känsligt under mina nybörjare dagar för att formatera hela hårddisken utan att vilja och nu starta om bra ... Det behöver inte sägas att varken grubben startade.

  8.   raul sade

    Kan någon berätta för mig vilket kommando jag ska använda för att se kopieringsförloppet med dd-kommandot, vad jag menar är att se ett framstegsfält med% som har kopierats.

    slds

    1.    Juli sade

      Vän! lägga till kommandot pv. I samma inlägg säger han det nästan i början och förklarar hur man använder det. Läs det igen

  9.   pedro sade

    med det här kommandot:
    dd om = / dev / sdc | bzip2> /media/Elements/iso.gz
    Jag har lyckats skapa en iso-bild av en 16 GB disk och spara den på en 400 GB disk.
    Men jag vet inte vad kommandot skulle vara att återställa den bilden till den ursprungliga 16 GB-skivan eller till en annan med samma kapacitet

  10.   Luis Rodriguez sade

    en fråga

    använd detta kommando för att
    för n i {1..5}; gör dd om = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
    för en 2TB-disk
    då stannar jag i konsolen något sånt
    >
    Ska jag köra ett annat kommando eller hur lång tid kan processen ta?

    tack och fortsätt

    1.    Jazb sade

      Det finns ett stavfel i för ... saknas i slutet av raden «; gjort »stannade« i n i {1..5}; gör dd om = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; Gjort "

  11.   henry salazar sade

    väldigt bra artikel ... .. Jag ska omsätta den i praktiken ... hälsningar kompis

  12.   Marcos_tux sade

    Mycket användbart, det hjälpte mig mycket tack

  13.   EDFR sade

    Bra Alf. Tack för informationen.

    En fråga. Finns det ett sätt att bara kopiera en del av källskivan? Fallet är att om jag har en 120 GB-disk där endast 25 GB används och jag vill göra en kopia till en 40 GB-disk, skulle jag bara vara intresserad av att kopiera det använda utrymmet (25 GB), finns det ett sätt med det här kommandot ?
    Tack på förhand.

    1.    yukiteru sade

      Det skulle vara bättre för dig att använda rsync, med kommandot rsync -av / path / to / origin / path / to / destiny skulle du redan säkerhetskopiera alla dina behörigheter med motsvarande behörigheter.

    2.    yukiteru sade

      Jag menade: "alla dina filer med motsvarande behörigheter"

  14.   FOXSPY sade

    Kära, vet någon varför när den upptar dd-kommandot når den bara 4.2 GB och indikerar att filen är mycket stor? Det är en bild på en 250 GB disk och går till en 1 TB extern disk.

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

    1.    Kidnappare sade

      4Gb-felet ger dig det eftersom du försöker göra en säkerhetskopia i en partition med fs FAT16

  15.   Bern sade

    Vilken bra blogg. Mycket användbart inlägg. Jag hade redan sett användningen av detta kommando någon annanstans, men de förklarade inte alls något. Tack.

  16.   Carlos Torres sade

    Hej, jag har en injektionsmaskin där programmet gick förlorat sedan de ersatte biostacken, vi har ingen säkerhetskopia men vi har en annan samma maskin, den har bara diskett och seriell och parallellport, hur kan jag göra en säkerhetskopia på den här maskinen för att ladda den i den andra, jag hoppas att du kan hjälpa mig tack

  17.   ernesto sade

    Jag vill bara kopiera en partition utan att börja från LIVE CD. Till exempel har jag en disk med / dev / sda1, / dev / sda5, / dev / sda6 och jag vill göra en kopia till / dev / sda5 från en annan disk / dev / sdb1

    kommandot är dd om = / dev / sdb1 av = / dev / sda5 bs = 1M ????

  18.   Peter Lobato sade

    Hej hur mår du. Jag bor också i Guadalajara.
    Din artikel om DD-kommandot är väldigt intressant. Jag vill prova några Linux-distributioner, särskilt Archlinux, men jag har inte kunnat använda DD-kommandot och kopiera Archilinux ISO som jag redan laddat ner på ett USB-minne. Jag vet inte om du kan skicka mig en bock för att börja med det här. Tack, Pedro lobato

  19.   Segrare sade

    Varför när en iso spelas in med kommandot "dd" fungerar den bara för att starta på vissa datorer?
    Exp. Jag har två bärbara datorer och ingen av dem startar iso för någon Linux-distribution; tvärtom startar den på en gammal stationär PC med tomgång

    1.    seb sade

      Det bästa är att spela säkert med unetbootin, med dd har jag också fått frågan om varför det ibland inte fungerar.

      1.    livlig sade

        Jag tror inte att det beror på DD utan på ISO. Samma sak med Unetbootin, det fungerar inte bra med alla distributioner.

  20.   Segrare sade

    Ibland fungerar det på alla datorer men du måste lägga till mbr och syslinux till usb i processen; men det här är långt och tråkigt.
    Den enkla delen om unetbooting

    Var försiktig: det är inte iso eller dd för mig, det är hur du spelar in det.

  21.   danny sade

    Jag tvivlar på om jag använder det här kommandot:
    sudo dd if = / dev / zero of = / dev / diskdrive
    Istället för detta är formateringen på låg nivå densamma eller tar längre tid än så här:
    sudo dd om = / dev / zero of = / dev / diskdrive bs = 1M ..

  22.   arg0s sade

    Kan dd-kommandot användas för att radera en specifik fil?

    till exempel

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

  23.   arg0s sade

    med bs = 1M blir det snabbare

  24.   alex sade

    Och om jag ska göra en exakt kopia från en skiva till en annan, med alla dess partitioner (swap, sda ...) och båda skivorna är desamma, men den ena är på datorn och den andra på en NAS över nätverket? ???
    Tack

  25.   gerardo sade

    En kommentar, jag använder den med status = framsteg i slutet och jag behöver inte pv, så debian fungerar mycket bra för mig att se framstegen.
    Och det andra, finns det ett sätt att bara hämta data och inte hela enheten, eftersom om det är en 2TB-skiva och jag bara använder 100 GB, behöver jag allt utrymme. Finns det ett sätt att bara säkerhetskopiera de 100 GB? Och när jag skickar det till ett annat medium kan det vara en mindre disk kanske en 500?

  26.   Alexander sade

    Hjälp !!!
    Utför kommandot
    dd if = cbpp-9.0-amd64-20170621.iso of = / dev / sdb

    allt bra ... men nu vill jag använda usb som en lagringsenhet och ...

    USB är inte monterad, den visas inte ens i GParted.

    Vet någon vad jag kan göra.

    PS: vilket skulle vara det bästa programmet för att återställa information från skivor och CD-DVD ...

    1.    anonym sade

      du måste göra om partitionstest med fdisk