dd ( datan määritelmä ) on UNIX-ohjelma tiedostojen kopioimiseen ja muuntamiseen. Nimi on peritty DD-operaattorilta ( Data Definition ) JCL-kielestä [ 1 ] [2] .
Koska UNIXissa monet objektit (kiintolevyt / levykkeet, COM / LPT-portit, tietokoneen RAM, muisti kunkin prosessin koodilla / tiedoilla) esitetään erikoistiedostoina, apuohjelman sovellusvalikoima ddon paljon laajempi kuin ensi silmäyksellä näyttää. Säännöllisesti ei tarvitse kopioida vain tiedostoa tai useita tiedostoja (johon cp -apuohjelma on tarkoitettu ), vaan kopioida tiedoston ensimmäiset n tavua, ohittaa m tavua alusta, lukea tiedosto viallisesta medium, käännä tiedoston sisältö ASCII -muotoon , "käännä" tiedoston tavujärjestys ( Little-Endian vs. Big-Endian ) [3] , kopioi vain erittäin suuri tiedosto tai kaikki yhdessä. Tätä tarkoitusta varten ja palvelee dd.
Tämän apuohjelman avulla voit muun muassa kopioida alueita raa'ista laitetiedostoista, esimerkiksi tehdä varmuuskopion kiintolevyn käynnistyssektorista tai lukea kiinteitä tietolohkoja erikoistiedostoista, kuten /dev/zero tai /dev/random . [4] .
Apuohjelman nimi ddtulkitaan joskus vitsillä "levyn tuhoajaksi", "datan tuhoajaksi", "poista tiedot" tai "viimeistele levy", koska apuohjelman avulla voit suorittaa matalan tason toimintoja kiintolevyillä - pienimmälläkin virheellä. (kuten parametrien kääntäminen ifja of) voit menettää osan levyllä olevista tiedoista (tai jopa kaikki tiedot) [3] . On myös "kunnioittavampi" lempinimi - "levykopioija", koska käytännössä sen pääsovellus on osioiden kopiot, kuvat ja varmuuskopiot.
Tämä artikkeli on kirjoitettu käyttämällä komentoa man dd , joka kuvaa dd : n GNU -versiota . Muiden käyttöjärjestelmien dd :n versiot voivat olla erilaisia.
dd [--help] [--version] [status] [if=файл] [of=файл] [ibs=байты] [obs=байты] [bs=байты] [cbs=байты] [skip=блоки] [seek=блоки] [count=блоки] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]
Luo CD/DVD- kuva käyttämällä suurta lohkokokoa. Ohita virheet:
dd jos = /dev/cdrom of = backup.iso bs = 65536 konv = noerrorKirjoita ISO-kuva "image.iso" sdb-laitteeseen sekä sen käynnistyssektori ja osion muotoilu kuvatiedostojärjestelmään (yleensä ISO 9660 tai UDF ):
dd if = image.iso = / dev/sdbKopioi tiedosto foo tiedostopalkkiin:
dd jos = foo of = barKopioi tiedosto foo tiedostopalkkiin ohittaen ensimmäiset 10 kt tiedostosta foo:
dd jos = foo of = bar bs = 1k ohitus = 10Leikkaa 10 Mt foo-tiedosto 2 5 Mt tiedostoksi:
dd jos = foo = bar.0 bs = 1M count = 5 dd jos = foo = bar.1 bs = 1M ohitus = 5 _ _Yhdistä neljä 100 Mt tiedostoa yhdeksi:
dd jos = SMILE.001 / = SMILE bs = 1M etsintä = 0 dd jos = SMILE.002 / = SMILE bs = 1M etsintä = 100 dd , jos = SMILE.003 / = SMILE bs = 1M etsintä = 200 dd , jos = SMILE . 004 / = SMILE bs = 1M etsintä = 300ja se on mahdollista näin:
dd jos = SMILE.001 > SMILE dd jos = SMILE.002 >> SMILE dd jos = SMILE.003 >> SMILE dd jos = SMILE.004 >> SMILEtai (jos haluat kerätä tiedoston suuresta määrästä kappaleita):
i : lle { 1 ..4 } ; do dd if = SMILE.00 $i >> SMILE valmisYllä olevat esimerkit osoittavat dd:n mahdollisuudet; käytännössä kissaa käytetään yleensä :
kissa SMILE.00 { 1 ,2,3,4 } >> SMILETulosta näytölle (kansioon /dev/stdout) tiedoston foo ensimmäiset 256 tavua:
dd jos = foo of = /dev/stdout bs = 128 count = 2tai:
dd jos = foo bs = 128 count = 2Edellinen komento on hyvä vain tekstitiedoston katseluun. Binaaritiedoston sisällön suositellaan näyttävän tältä:
dd jos = foo bs = 1 count = 10 2 >/dev/null | hexdumpUseimmissa tapauksissa kannattaa olla varovainen, ettei kohdetiedosto päädy samalle levylle, jolta kuva on otettu (ja itse asiassa on suositeltavaa irrottaa se kokonaan, koska kaikki vahingossa tehdyt muutokset tiedostojärjestelmään voivat kuvan eheys).
Kopioi yksi kiintolevyosio toiselle kiintolevylle I/O-virheet huomioimatta:
dd jos = /dev/sda1 / = /dev/sdb2 bs = 4096 konv = noerror,syncTee kopio ensimmäisen kiintolevyn pääkäynnistystietueesta (MBR) :
dd jos = /dev/hda of = bootloader.mbr bs = 512 count = 1Täytä kaikki nykyisen osion vapaa tila nollilla:
dd jos = /dev/ zeroof = nollatäyttöLuo pakattu kuva ensimmäisestä kiintolevystä, jossa on kaikki osiot (suosittelemme ensin täyttämään vapaan tilan nollilla pakkaamisen parantamiseksi):
dd jos = /dev/sda | xz -9 > MyFuBu.ISO.XZLuo 2 Gt:n segmentoitu kuva ensimmäisestä kiintolevystä kaikilla osioilla (pakkauksella ja ilman):
dd jos = /dev/sda | xz -9 | split -b 2G --additional-suffix = .xz - MyFuBu.iso. dd jos = /dev/sda | split -b 2G --additional-suffix = .iso - MyFuBu.
Tarkastele ensimmäisen kiintolevyn pääkäynnistystietueen (MBR)
sisältöä
:
Kopioi kaikki paitsi tarra levyltä nauhalle :
( dd bs = 4k ohitus = 1 count = 0 && dd bs = 512k ) < $levy > $nauhaKopioi kaikki nauhalta levylle ilman etiketin päälle kirjoittamista:
( dd bs = 4k etsintä = 1 count = 0 && dd bs = 512k ) < $nauha > $levyTuhoa laitteen sisältö /dev/sdgtäyttämällä se "nollailla" osoitteesta /dev/zero:
dd jos = /dev/nolla = / dev/sdg bs = 65536Tarkista toiminnan tila:
killall -USR1 ddJoissakin tapauksissa suoritustilaa tarkastellaan komennolla:
pkill -USR1 -x ddUusimmissa versioissa edistymisen tila voidaan tulostaa konsoliin antamalla dd-komento status=progress
dd if = image.iso of = /dev/sdb tila = edistyminenAvoimen lähdekoodin palautusohjelmia ovat dd_rescue [5] [6] [7] [8] ja dd_rhelp [9] [10] , jotka toimivat yhdessä, savehd7 ja GNU ddrescue .
Antonio Diaz Diaz (GNU ddrescuen kehittäjä) vertaa [11] dd-vaihtoehtoa palautustehtäviin:
Tavallinen dd -apuohjelma suorittaa levyn lineaarisen lukemisen, ja tämä voi kestää kauan tai jopa polttaa aseman ilman palautusta, jos virheet sijaitsevat kiintolevyn alussa.
dd_rescue tekee saman kuin dd, mutta tehokkaammin.
dd_rhelp on monimutkainen komentosarja, joka suorittaa dd_rescue-komentoa monta kertaa yrittäen kopioida asemaa strategisesti, mutta se on erittäin tehoton.
Apuohjelmat optisten levyjen kanssa työskentelemiseen | |||||||
---|---|---|---|---|---|---|---|
Windows |
| ||||||
Linux ja muut UNIXin kaltaiset käyttöjärjestelmät | |||||||
OS X | |||||||
Optisen aseman emulaattorit | |||||||
Optisten levyjen kuvankäsittelyohjelmat |
Unix-komennot | ||||||||
---|---|---|---|---|---|---|---|---|
|
Arkiston muodot | |
---|---|
Vain arkistointi | |
Vain pakkaus | |
Arkistointi ja pakkaus | |
Ohjelmistojen pakkaus ja jakelu |