Dd este un utilitar foarte puternic și util disponibil pe sistemele de operare Unix și Unix. După cum se menționează în manualul său, scopul său este de a converti și copia fișiere. Pe sistemele de operare Unix și Unix, cum ar fi Linux, aproape totul este tratat ca un fișier, chiar blochează dispozitivele: acest lucru face ca dd să fie util, printre altele, pentru a clona discuri sau a șterge date. Utilitarul dd
este disponibil din cutie chiar și în cea mai minimă instalare a tuturor distribuțiilor., În acest tutorial vom vedea cum să îl utilizăm și cum îi putem modifica comportamentul folosind unele dintre cele mai utilizate opțiuni pentru a vă ușura munca de administrare a sistemului Linux.,/td>
sudo
comanda $ – necesită dat linux comenzile să fie executate ca o regulat non-utilizator privilegiat
utilizare de Bază
De bază sintaxa dd
este foarte simplu., În mod implicit programul citește de la standard input
și scrie standard output
. Putem, cu toate acestea, specifica alternative input
și output
fișiere utilizând respectiv if
și of
opțiuni de linie de comandă. Aici dd diferă de marea majoritate de comenzi shell, deoarece nu utilizează standardul --option
sau -o
sintaxa pentru opțiuni.,
Aboneaza-te la RSS și NEWSLETTER-ul și de a primi cele mai recente știri Linux, locuri de muncă, consiliere în carieră și tutoriale.
Să vedem un exemplu de utilizare dd. Una dintre cele mai tipice cazuri de utilizare pentru utilitarul de backup din master boot record: primul sector de pe o moștenire MBR
sistem partiționat., Lungimea acestui sector este de obicei 512
bytes: acesta conține etapa 1 de grub bootloader
și disk partition table. Să presupunem că doriți să copie de rezervăMBR
de /dev/sda disc, tot ce trebuie să faci este să invoce dd cu următoarea sintaxă:
$ sudo dd if=/dev/sda bs=512 count=1 of=mbr.img
Să analizăm comanda de mai sus. În primul rând am prefixat invocarea DD reală cu comanda sudo, pentru a rula comanda cu privilegii administrative. Acest lucru este necesar pentru a accesa dispozitivul bloc /dev/sda
., Apoi am invocat dd specificând sursa de intrare cu if
opțiune și fișierul de ieșire cu of
. De asemenea, am folosit opțiunile bs
și count
pentru a specifica, respectiv, cantitatea de date care trebuie citite la un moment dat sau dimensiunea blocului și cantitatea totală de blocuri de citit. În acest caz, am fi putut omite opțiunea bs
, deoarece 512
bytes este dimensiunea implicită utilizată de dd., Dacă vom rula comanda de mai sus, vom vedea că ea produce următoarea ieșire:
1+0 records in1+0 records out512 bytes copied, 0.000657177 s, 779 kB/s
ieșire de mai sus ne arată cantitatea de înregistrări citite și scrise, cantitatea de date copiate, cantitatea de timp în care sarcina a fost finalizată, iar viteza de transfer. Acum ar trebui să avem o clonă a sectorului MBR
, stocată în fișierul mbr.img
. Evident, sufixul de fișier nu are nici o semnificație reală pe Linux, astfel încât utilizarea „.img ” unul este complet arbitrar: poate doriți să utilizați „.,dd ” pentru a lăsa numele fișierului să reflecte comanda care a fost utilizată pentru a crea fișierul.
în exemplul de mai sus folosim opțiunea bs
pentru a defini atât cantitatea de octeți care ar trebui citite și scrise la un moment dat. Pentru a defini separat valori pentru cele două operații, putem folosi ibs
și obs
opțiuni în loc, care a stabilit, respectiv, suma de octeți de citit și scris la un moment dat.,
omiterea blocurilor la citire și scriere
există cazuri în care este posibil să dorim să omitem o anumită cantitate de dimensiuni de bloc atunci când citim sau scriem într-un fișier. În astfel de cazuri, trebuie să utilizați skip
și seek
opțiuni, respectiv: acestea sunt utilizate pentru a sări peste specificate blocuri de date, la începutul intrare și la început de ieșire.,
Un exemplu de astfel de situație este atunci când vrem să backup/restore datele ascunse între MBR
și prima partitie de pe disc, care, de obicei, începe de la sectorul 2048
, pentru alinierea motive. 2047
sectoare din această zonă conțin, de obicei, pe o moștenire MBR
partitia de instalare, etapa 1.5 din grub bootloader. Cum putem instrui dd să cloneze doar această zonă, fără a include MBR
?, Tot ce trebuie să facem este de a utiliza skip
opțiune:
$ sudo dd if=/dev/sda of=hidden-data-after-mbr count=2047 skip=1
În acest caz avem de-a instruit dd pentru a copia 2047
blocuri 512
octeți de la /dev/sda disc pornind de la cel de-al doilea., În situația opusă, atunci când vrem să refacă clonat de date și scrie-l înapoi în același disc zonă, vrem să folosim caute opțiune, care sare peste un anumit număr de blocuri, la început de ieșire:
$ sudo dd if=hidden-data-after-mbr of=/dev/sda seek=1
În acest caz avem de-a instruit dd pentru a copia datele din hidden-data-after-mbr
și să-l scrie pe /dev/sda
blocare dispozitiv de pornire la cel de-al doilea bloc.
comprimarea datelor citite de dd
după cum am spus deja, una dintre cele mai frecvente operații efectuate cu dd este clonarea discului., Comanda dd produce o clonă perfectă a unui disc, deoarece copiază dispozitivele bloc octet cu octet,astfel încât clonarea unui disc de 160 GB produce o copie de rezervă de aceeași dimensiune. Atunci când clonarea unui disc într-un fișier, putem totuși țeavă datele citite de dd deși compresie utilități, cum ar fi gzip
, pentru a optimiza rezultatul și de a reduce dimensiunea fișierului final., Spune, de exemplu, dorim să creăm o clona a întregului /dev/sda dispozitiv bloc, am putea scrie:
$ sudo dd if=/dev/sda bs=1M | gzip -c -9 > sda.dd.gz
În exemplul de mai sus am instruit dd pentru a citi de la /dev/sda dispozitiv, și ne-am schimbat, de asemenea, dimensiunea blocului de 1M, care ne poate oferi o performanță mai bună în astfel de situație. Avem apoi transmise datele, prelucrarea ulterioară cu gzip
program care ne-am invocat cu -c
(scurt pentru --to-stdout
) și -9
opțiune care instruiește programul să folosească la maxim disponibil de compresie., În cele din urmă, am redirecționat ieșirea către „SDA.dd.dosarul „gz”. Apropo, dacă doriți să aflați mai multe despre redirections
puteți citi articolul nostru pe această temă.
ștergerea unui dispozitiv bloc
Un alt caz de utilizare dd, este ștergerea unui dispozitiv. Există multe situații în care poate fi necesar să efectuăm o astfel de operație: este posibil să dorim să vindem un disc și să ne asigurăm că conținutul său anterior este șters complet din motive evidente de confidențialitate sau poate dorim să ștergem datele înainte de a configura criptarea., În primul caz, ar fi suficient să suprascrieți discul cu zerouri:
$ sudo dd if=/dev/zero bs=1M of=/dev/sda
comanda de mai sus instruiește dd să citească de pe dispozitivul /dev/zero care furnizează caractere nule și să le scrie pe dispozitive până când este complet umplut.
înainte de a configura un strat de criptare pe sistemul nostru, este posibil să dorim să umplem discul cu date aleatorii, pentru a face sectoarele sale care vor conține date nedistinguibile de cele goale și pentru a evita scurgerile de metadate., În acest caz, dorim să citească date din /dev/random
sau /dev/urandom
dispozitive
$ sudo dd if=/dev/urandom bs=1M of=/dev/sda
Ambele comenzi va necesita o cantitate semnificativă de timp pentru a termina, în funcție de mărimea și tipul de dispozitiv bloc în cauză și sursa de date aleatoare utilizate, /dev/random
fiind mai lent (blochează până când acesta nu se aduna suficient de mediu zgomot), dar se întoarce de calitate superioară date aleatoare decât /dev/urandom
.,
conversia datelor
conv
Opțiuni de dd este utilizat pentru a aplica conversii de date. Opțiunile trebuie să fie prevăzute cu o listă de simboluri separate prin virgulă ca argumente. Aici unele dintre cele mai utilizate:
- noerror – Acest lucru face ca utilizarea dd continua chiar și după o eroare de citire este întâlnită;
- notrunc – Această opțiune instruiește dd să nu trunchiați fișierul de ieșire;
- sincronizare – Această opțiune are sens mai ales atunci când este utilizat împreună cu noerror. Acesta instruiește dd la pad fiecare blocuri de intrare cu NULs.,
un caz tipic în care este posibil să dorim să rulăm DD împreună cu opțiunea conv=sync,noerror
, este atunci când clonăm un disc care conține sectoare deteriorate. Într-un asemenea caz noerror
opțiune va face dd continua să funcționeze chiar și în cazul în care un sector nu poate fi citit cu succes, iar sync
opțiune va face astfel încât cantitatea de date nu a reușit să fie citit sale înlocuiește cu NULs
, astfel încât lungimea datelor este păstrată chiar dacă datele reale este pierdut (deoarece nu este posibil să-l citească).,
concluzii
în acest tutorial am învățat să folosim comanda dd foarte puternică. Am văzut câteva dintre cazurile tipice în care este folosit programul, cum ar fi clonarea discului și învățăm să cunoaștem sintaxa acestuia și opțiunile mai importante pe care le putem folosi pentru a-i modifica comportamentul. Deoarece DD este un utilitar foarte puternic, acesta trebuie utilizat cu o atenție deosebită: Doar prin comutarea țintei de intrare și ieșire, se poate, în unele situații, distruge complet datele de pe un disc.