Dd

Linux.fista
Versio hetkellä 16. huhtikuuta 2010 kello 17.39 – tehnyt 82.181.133.7 (keskustelu) (lisätty dd:lle esimerkki kuinka levyltä, joka antaa IO-virhettä voi kopioida tiedoston)
Siirry navigaatioon Siirry hakuun

dd on komentorivityökalu eri tiedostojen matalan tason kopiointiin ja muuntamiseen toiseen muotoon. Toisin kuin cp, joka kopioi kokonaisia tiedostoja, kopioi dd tiedoston sisällön bitintarkasti. Tästä syystä dd:llä voidaan esimerkiksi tehdä identtinen kopio jostakin osiosta (partition) jollekin toiselle osiolle.

Käyttö

Kopioidaan koko ykköskiintolevy (/dev/hda), mukaanlukien esimerkiksi osiotaulukko, täyteen satunnaista dataa, mikä tuhoaa kaiken tällä kiintolevyllä ja sen eri osioilla sijaitsevan tiedon. Mikäli lähdetiedostona käytetään /dev/urandomin sijasta /dev/randomia, on satunnaisluvun taso korkeampi, mutta operaatio sujuu selvästi hitaammin.

dd if=/dev/urandom of=/dev/hda 

Kirjoitetaan kiintolevyn /dev/hdb osiotaulukko ja pääkäynnistyslohko täyteen nollaa, mikä käytännössä estää kiintolevyn nykyisten tietojen käytön. Sitä varten käytettäväksi lohkokooksi määritellään 512 tavua ja tämän lohkon kirjoitus määritellään toistettavaksi kaksi kertaa.

dd if=/dev/zero of=/dev/hdb bs=512 count=2

Dd:tä voi käyttää myös putkissa, if- ja of-parametrit eivät ole pakollisia:

fortune | dd | less

toimii tarkalleen samoin kuin

fortune | less

Tällöin dd:n käyttö vaikuttaa tyhmältä, mutta jos välissä on vaikkapa ssh-yhteys, dd:stä saattaa olla enemmän hyötyä:

fortune | ssh kayttaja@kone 'dd | less'

Levykuvien luominen

Tehdään sisälläolevasta levykkeestä (laitetiedosto /dev/fd0) levykuva (image) tiedostoon korppu.img. Vastaavasti voi luoda myös iso-imagen optisesta levystä.

dd if=/dev/fd0 of=korppu.img

Luodaan tyhjä tiedosto, jota voi käyttää levykuvana. Levykuvan koko annetaan tässä kibitavuina.

dd if=/dev/zero of=/polku/<levykuvan nimi> count=<koko> bs=1024


Naarmuisen DVD:n tai CD:n kopioiminen

Vaikka cp antaisi virheilmoitusta levyltä kopioidessa, dd:llä voi onnistua jotakin pelastamaan. Riippuu paljon tiedoston tyypistä voiko sitä käyttää, jos siittää puuttuu pala/palasia. Ensin aloitetaan kopiointi dd:llä ja katsotaan, kuinka pitkälle se pääsee:

dd if=/media/DVD/tiedosto of=tiedosto
dd: luettaessa tiedostoa "/media/DVD/tiedosto": I/O-virhe
608+0 tietuetta sisään
608+0 tietuetta ulos
311296 tavua (311 kB) kopioitu 6,06266 sekunnissa, 51,3 kB/s

Jatketaan kopiointia toiseen tiedostoon virhekohdan toiselta puolelta. Kun etsit ehjää aloituskohtaa (skip), kasvata arvoa niin vähän kerrallaan, kun viitsit.

dd if=/media/DVD/tiedosto of=tiedosto2 bs=1 skip=411296

Jatka samalla tavalla, jos virheitä on enemmänkin.

Lopuksi voit yhdistää palaset

cat tiedosto tiedosto2 tiedosto3 > lopullinen

Esimerkiksi video/audio/kuvat ovat aika hyviä sietämään tällaista, varsinkin jos virheitä ei ole ihan tiedoston alussa. Jos joku mediasoittimesi ei osaa katkokohtaa näyttää, avaa tiedosto johonkin videoeditoriin ja tallenna. Tähän voi mennä aikaa tuntikin, mutta ulos tulevassa ei pitäisi olla enää virheitä.