Cum funcționează comanda dd în Linux cu exemple

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>

Nici un software special, este necesar să urmați acest tutorial, cu excepția dd Alte Familiarizarea cu interfață linie de comandă și redirectionari Convențiile # – necesită dat linux comenzile să fie executate cu privilegii de root, fie direct ca root sau prin utilizarea de 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 NEWSLETTER-ul & RSS
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.

Author: admin

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *