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.
Acest articol a fost scris folosind man dd , care descrie versiunea GNU a dd . Versiunile dd pe alte sisteme de operare pot diferi.
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}]
Creați o imagine CD/DVD folosind o dimensiune mare de bloc. Ignora erorile:
dd if = /dev/cdrom of = backup.iso bs = 65536 conv = noerrorScrieț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/sdbCopiați fișierul foo în bara de fișiere:
dd if = foo of = barCopiaț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 = 10Tă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 = 300si este posibil asa:
dd if = SMILE.001 > SMILE dd if = SMILE.002 >> SMILE dd if = SMILE.003 >> SMILE dd if = SMILE.004 >> SMILEsau (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 facutExemplele de mai sus arată posibilitățile dd; în practică, pisica este de obicei folosită :
cat ZAMBETE.00 { 1 ,2,3,4 } >> ZAMBETETipă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 = 2sau:
dd if = foo bs = 128 count = 2Comanda 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Î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,syncFaceți o copie a înregistrării master de boot (MBR) a primului hard disk:
dd if = /dev/hda of = bootloader.mbr bs = 512 count = 1Umpleți tot spațiul liber din partiția curentă cu zerouri:
dd dacă = /dev/ zeroof = zerofillCreaț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.XZCreaț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:
Copiați totul, cu excepția etichetei de pe disc pe bandă :
( dd bs = 4k skip = 1 count = 0 && dd bs = 512k ) < $disk > $tapeCopiați totul, fără a suprascrie eticheta, de pe bandă pe disc:
( dd bs = 4k seek = 1 count = 0 && dd bs = 512k ) < $tape > $diskDistrugeți conținutul dispozitivului /dev/sdgumplându-l cu „zerouri” de la /dev/zero:
dd if = /dev/zero of = /dev/sdg bs = 65536Verificaț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 = progresProgramele 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.
Utilități pentru lucrul cu discuri optice | |||||||
---|---|---|---|---|---|---|---|
Windows |
| ||||||
Linux și alte sisteme de operare asemănătoare UNIX | |||||||
OS X | |||||||
Emulatori de unități optice | |||||||
Editori de imagini pe disc optice |
Comenzi Unix | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|
Formate de arhivare | |
---|---|
Doar arhivare | |
Doar compresie | |
Arhivare și compresie | |
Ambalare și distribuție software |