Dd

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 11 mai 2020; verificările necesită 4 modificări .

dd ( definiția datelor ) este un program UNIX atât pentru copierea, cât și pentru conversia fișierelor. Numele este moștenit de la operatorul DD ( Data Definition ) din limbajul JCL [ 1 ] [2] .

Întrucât în ​​UNIX multe obiecte (hard/dischete, porturi COM/LPT, RAM computer, memorie cu codul/datele fiecărui proces) sunt reprezentate ca fișiere speciale, gama de aplicații a utilitarului ddeste mult mai largă decât pare la prima vedere. În mod regulat, este nevoie nu doar să copiați un fișier sau mai multe fișiere (care este pentru care este destinat utilitarul cp ), ci să copiați primii n octeți ai fișierului, să săriți m octeți de la început, să citiți fișierul dintr-un fișier defect. mediu, traduceți conținutul fișierului în ASCII , „inversați” ordinea octeților din fișier ( Little-Endian vs. Big-Endian ) [3] , doar copiați un fișier foarte mare sau toate împreună. În acest scop, și servește dd.

Printre altele, acest utilitar vă permite să copiați regiuni din fișierele brute ale dispozitivului, de exemplu, să faceți o copie de rezervă a sectorului de pornire a hard diskului sau să citiți blocuri de date fixe din fișiere speciale, cum ar fi /dev/zero sau /dev/random [4] .

Numele utilitarului ddeste uneori descifrat în glumă ca „distrugător de disc”, „distrugător de date”, „șterge date” sau „termină discul”, deoarece utilitarul vă permite să efectuați operațiuni de nivel scăzut pe hard disk - la cea mai mică eroare (cum ar fi inversarea parametrilor ifși of) puteți pierde o parte din datele de pe disc (sau chiar toate datele) [3] . Există, de asemenea, o poreclă mai „respectuoasă” - „duplicator de disc”, deoarece, în practică, principala sa aplicație sunt copiile, imaginile și copiile de rezervă ale partițiilor.

Unii parametri

Acest articol a fost scris folosind man dd , care descrie versiunea GNU a dd . Versiunile dd pe alte sisteme de operare pot diferi.

Parametrii de bază

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}]

Exemple de utilizare

Lucrul cu CD/DVD-uri și imagini

Creați o imagine CD/DVD folosind o dimensiune mare de bloc. Ignora erorile:

dd if = /dev/cdrom of = backup.iso bs = 65536 conv = noerror

Scrieți imaginea ISO „image.iso” pe dispozitivul sdb, împreună cu sectorul său de pornire și formatarea partiției, în sistemul de fișiere imagine (de obicei ISO 9660 sau UDF ):

dd if = imagine.iso of = /dev/sdb

Lucrul cu fișiere

Copiați fișierul foo în bara de fișiere:

dd if = foo of = bar

Copiați fișierul foo în bara de fișiere, săriți peste primii 10 KB din fișierul foo:

dd if = foo of = bar bs = 1k skip = 10

Tăiați un fișier foo de 10 MB în 2 fișiere de 5 MB:

dd if = foo of = bar.0 bs = 1M count = 5 dd if = foo of = bar.1 bs = 1M skip = 5

Îmbină patru fișiere de 100 MB într-unul singur:

dd if = SMILE.001 of = SMILE bs = 1M seek = 0 dd if = SMILE.002 of = SMILE bs = 1M seek = 100 dd if = SMILE.003 of = SMILE bs = 1M seek = 200 dd dacă = SMILE. 004 of = SMILE bs = 1M seek = 300

si este posibil asa:

dd if = SMILE.001 > SMILE dd if = SMILE.002 >> SMILE dd if = SMILE.003 >> SMILE dd if = SMILE.004 >> SMILE

sau (pentru a colecta un fișier dintr-un număr mare de piese):

pentru i în { 1 ..4 } ; do dd if = SMILE.00 $i >> SMILE facut

Exemplele de mai sus arată posibilitățile dd; în practică, pisica este de obicei folosită :

cat ZAMBETE.00 { 1 ,2,3,4 } >> ZAMBETE

Tipăriți pe ecran (în /dev/stdout) primii 256 de octeți ai fișierului foo:

dd if = foo of = /dev/stdout bs = 128 count = 2

sau:

dd if = foo bs = 128 count = 2

Comanda anterioară este bună numai pentru vizualizarea unui fișier text. Conținutul fișierului binar este recomandat să arate astfel:

dd if = foo bs = 1 count = 10 2 >/dev/null | hexdump

Backup și ștergerea datelor

În cele mai multe cazuri, ar trebui să aveți grijă ca fișierul de destinație să nu ajungă pe același disc de pe care este luată imaginea (și, de fapt, este recomandabil să îl demontați complet, deoarece orice modificare accidentală a sistemului său de fișiere poate încălca integritatea imaginii).

Copiați o partiție de hard disk pe un alt hard disk, ignorând erorile I/O:

dd if = /dev/sda1 of = /dev/sdb2 bs = 4096 conv = noerror,sync

Faceți o copie a înregistrării master de boot (MBR) a primului hard disk:

dd if = /dev/hda of = bootloader.mbr bs = 512 count = 1

Umpleți tot spațiul liber din partiția curentă cu zerouri:

dd dacă = /dev/ zeroof = zerofill

Creați o imagine comprimată a primului hard disk cu toate partițiile (se recomandă să umpleți mai întâi spațiul liber cu zerouri pentru o comprimare mai bună):

dd dacă = /dev/sda | xz -9 > MyFuBu.ISO.XZ

Creați o imagine segmentată de 2 Gb a primului hard disk cu toate partițiile (cu și fără compresie):

dd dacă = /dev/sda | xz -9 | split -b 2G --additional- sufx = .xz - MyFuBu.iso. dd dacă = /dev/sda | split -b 2G --additional-sufix = .iso - MyFuBu.


Vizualizați conținutul înregistrării master boot (MBR) a primului hard disk:

dd dacă = /dev/sda bs = 512 count = 1 | hexdump -C

Copiați totul, cu excepția etichetei de pe disc pe bandă :

( dd bs = 4k skip = 1 count = 0 && dd bs = 512k ) < $disk > $tape

Copiați totul, fără a suprascrie eticheta, de pe bandă pe disc:

( dd bs = 4k seek = 1 count = 0 && dd bs = 512k ) < $tape > $disk

Distrugeți conținutul dispozitivului /dev/sdgumplându-l cu „zerouri” de la /dev/zero:

dd if = /dev/zero of = /dev/sdg bs = 65536

Verificați starea unei operațiuni:

killall -USR1 dd

În unele cazuri, starea execuției este vizualizată cu comanda:

pkill -USR1 -x dd

În versiunile recente, starea progresului poate fi tipărită pe consolă prin lansarea comenzii dd cu status=progress

dd if = imagine.iso of = /dev/sdb status = progres

Variante orientate spre recuperare ale lui dd

Programele de recuperare open source includ dd_rescue [5] [6] [7] [8] și dd_rhelp [9] [10] care lucrează împreună, savehd7 și GNU ddrescue .

Antonio Diaz Diaz (dezvoltatorul GNU ddrescue) compară [11] opțiuni dd pentru sarcinile de recuperare:

Utilitarul standard dd efectuează o citire liniară a discului, iar acest lucru poate dura mult timp sau chiar poate arde unitatea fără a recupera nimic dacă erorile sunt localizate la începutul hard disk-ului.

dd_rescue face același lucru ca dd, doar mai eficient.

dd_rhelp  este un script shell complex care rulează dd_rescue de multe ori încercând să copieze strategic unitatea, dar este foarte ineficient.

  • dd_rhelp extrage mai întâi toate datele care pot fi citite și le salvează într-un fișier, inserând zerouri în loc de octeți pe care nu i-a putut citi. Utilitarul încearcă apoi să citească din nou datele nevalide și să actualizeze fișierul.
  • GNU dd_rescue poate fi folosit pentru a copia datele direct pe o unitate nouă, după cum este necesar, la fel ca dd.

Vezi și

Note

  1. IBM . Declarații JCL: Ce face declarația DD? . Preluat la 26 aprilie 2022. Arhivat din original la 26 aprilie 2022.
  2. Dennis Ritchie (17 februarie 2004). „ Re: originea comenzii UNIX dd ”. alt.folclor.calculatoare . (Grupuri Google) . Arhivat din original pe 8 iulie 2012.
  3. 1 2 Sam Chessman. Cum și când să utilizați comanda dd? (link indisponibil) . codecafea. Consultat la 19 februarie 2008. Arhivat din original pe 21 ianuarie 2012. 
  4. Dd - LQWiki . LinuxQuestions.org. Consultat la 19 februarie 2008. Arhivat din original pe 21 ianuarie 2012.
  5. dd_rescue . www.garloff.de. Consultat la 19 februarie 2019. Arhivat din original pe 16 mai 2001.
  6. GNU ddrescue este cel mai bun utilitar pentru recuperarea datelor de pe un hard disk deteriorat . rus-linux.net. Consultat la 19 februarie 2019. Arhivat din original pe 19 februarie 2019.
  7. OpenNET: articol - Recuperarea datelor de pe medii deteriorate utilizând gddrescue (reparare recuperare disc fs forensic linux) . www.opennet.ru Consultat la 19 februarie 2019. Arhivat din original pe 19 februarie 2019.
  8. Bruce Nikkel. Imagini criminalistice practice: Securizarea dovezilor digitale cu instrumente Linux . - No Starch Press, 2016. - 324 p. — ISBN 9781593278007 . Arhivat pe 19 februarie 2019 la Wayback Machine
  9. Kalysto - /Utilities/dd_rhelp - (ajutor de salvare a hard diskului) . www.kalysto.org. Preluat la 19 februarie 2019. Arhivat din original la 16 mai 2008.
  10. Kyle Rankin. Hack-uri Knoppix: Sfaturi și instrumente pentru piratarea, repararea și distracția PC-ului dvs. - „O'Reilly Media, Inc.”, 20-11-2007. — 422 p. — ISBN 9780596551759 . Arhivat pe 19 februarie 2019 la Wayback Machine
  11. Interviu cu Antonio Diaz Diaz de la GNU DDRescue (link nu este disponibil) . GNU albastru. Consultat la 6 decembrie 2008. Arhivat din original la 15 aprilie 2008. 

Literatură

Link -uri