Articles

DD (Unix) (Română)

Posted by admin

comanda dd poate fi utilizată pentru o varietate de scopuri. Pentru comenzile de copiere simplă tinde să fie mai lent decât alternativele specifice domeniului, dar excelează la capacitatea sa unică de a „suprascrie sau trunchia un fișier în orice moment sau de a căuta într-un fișier”, o interfață de nivel destul de scăzut la API-ul fișierului UNIX.

transfer de Datedit

dd poate duplica date între fișiere, dispozitive, partiții și volume. Datele pot fi de intrare sau de ieșire la și de la oricare dintre acestea; dar există diferențe importante în ceea ce privește ieșirea atunci când merge la o partiție., De asemenea, în timpul transferului, datele pot fi modificate folosind opțiunile conv pentru a se potrivi cu mediul. (În acest scop, cu toate acestea, dd este mai lent decât cat.)

opțiunea noerror înseamnă să continuați dacă există o eroare, în timp ce opțiunea de sincronizare determină căptușirea blocurilor de ieșire.

In-place modificationEdit

dd poate modifica datele în loc., De exemplu, aceasta suprascrie primul 512 octeți a unui fișier cu null bytes:

dd if=/dev/zero of=path/to/file bs=512 count=1 conv=notrunc

notrunc opțiunea de conversie înseamnă nu trunchiați fișierul de ieșire — care este, dacă fișierul de ieșire există deja, doar înlocuiți specificat de octeți și se lasă restul de fișier de ieșire singur. Fără această opțiune, dd ar crea un fișier de ieșire de 512 octeți.,

Master boot record backup și restoreEdit

exemplul de mai sus poate fi, de asemenea, utilizat pentru a face backup și restaura orice regiune a unui dispozitiv într-un fișier, cum ar fi o înregistrare master boot.

Pentru a duplica primele două sectoare de pe o dischetă:

dd if=/dev/fd0 de=MBRboot.img bs=512 count = 2

Disk wipeEdit

Articol principal: ștergerea datelor

Din motive de securitate, uneori este necesar să ștergeți discul unui dispozitiv aruncat. Acest lucru poate fi realizat printr-un „transfer de date” din fișierele speciale Unix.,

  • Pentru a scrie zerouri pe un disc, utilizați dd if=/dev/zero of=/dev/sda bs=16M.
  • pentru a scrie date aleatorii pe un disc, utilizați dd if=/dev/urandom of=/dev/sda bs=16M.

în comparație cu exemplul de modificare a datelor de mai sus, opțiunea de conversie notrunc nu este necesară, deoarece nu are efect atunci când fișierul de ieșire al dd este un dispozitiv bloc.

opțiunea bs=16m face ca dd să citească și să scrie 16 mebibytes la un moment dat. Pentru sistemele moderne, o dimensiune și mai mare a blocului poate fi mai rapidă., Rețineți că umplerea unității cu date aleatorii poate dura mai mult decât reducerea la zero a unității, deoarece datele aleatorii trebuie create de CPU, în timp ce crearea de zerouri este foarte rapidă. Pe unitățile moderne de hard disk, reducerea la zero a unității va face ca majoritatea datelor pe care le conține să fie permanent irecuperabile. Cu toate acestea, cu alte tipuri de unități, cum ar fi memorii flash, multe date pot fi încă recuperabile prin remanența datelor.unitățile hard disk moderne conțin o comandă de ștergere sigură concepută pentru a șterge permanent și sigur fiecare porțiune accesibilă și inaccesibilă a unei unități., De asemenea, poate funcționa pentru unele unități SSD (unități flash). Începând cu 2017, nu funcționează pe unități flash USB și nici pe memorii flash digitale sigure. Când este disponibil, acest lucru este mai rapid decât utilizarea dd și mai sigur. Pe mașinile Linux este accesibil prin intermediul opțiunii –security-erase-enhanced a comenzii hdparm.programul shred oferă mai multe suprascrieri, precum și ștergerea mai sigură a fișierelor individuale.

recuperarea Dateloredit

recuperarea datelor implică citirea de pe o unitate cu unele părți potențial inaccesibile., dd este o potrivire bună cu acest loc de muncă, cu sărind peste flexibil (seek) și alte setări de nivel scăzut. Vanilla dd, cu toate acestea, este stângace de utilizat, deoarece utilizatorul trebuie să citească mesajele de eroare și să calculeze manual regiunile care pot fi citite. Dimensiunea blocului unic limitează, de asemenea, granuaritatea recuperării, deoarece trebuie făcut un compromis: fie utilizați unul mic pentru mai multe date recuperate, fie utilizați unul mare pentru viteză.un program C numit dd_rescue a fost scris în octombrie 1999. A eliminat funcționalitatea de conversie a dd și acceptă două dimensiuni de bloc pentru a face față dilemei., Dacă o citire folosind o dimensiune mare eșuează, revine la dimensiunea mai mică pentru a aduna cât mai multe date posibil. De asemenea, poate rula înapoi. În 2003, a fost scris un script dd_rhelp pentru a automatiza procesul de utilizare a dd_rescue, urmărind ce zone au fost citite de unul singur.în 2004, GNU a scris o utilitate separată, fără legătură cu dd, numită ddrescue. Ea are un algoritm mai sofisticat bloc dinamic-size și ține evidența a ceea ce a fost citit pe plan intern. Autorii dd_rescue și dd_rhelp consideră că este superior implementării lor., Pentru a ajuta distinge mai nou program GNU din cele mai vechi scenariu, nume alternative sunt uneori folosite pentru GNU ddrescue, inclusiv addrescue (numele de pe freecode.com și freshmeat.net), gddrescue (Debian pachetul nume), și gnu_ddrescue (openSUSE pachetul nume).un alt program open-source numit savehd7 utilizează un algoritm sofisticat, dar necesită și instalarea propriului interpret de limbaj de programare.,privilegiul (și, de obicei, un singur fir) sistem de citire și scriere pentru 1024 octeți blocuri:

Generatoare de un fișier cu random dataEdit

Pentru a face un fișier de 100 bytes aleatoare folosind kernel aleatoare driver:

dd if=/dev/urandom de=myrandom bs=100 count=1

Conversia unui fișier la partea superioară caseEdit

Pentru a converti un fișier la majuscule:

dd if=numele=nume fișier1 conv=ucase,notrunc

Progresul indicatorEdit

Fiind un program conceput în principal ca un filtru, dd, în mod normal, nu oferă nici un indicator de progres., Acest lucru poate fi depășit prin trimiterea unui semnal USR1 la procesul GNU DD care rulează, rezultând în imprimarea DD numărul curent de blocuri transferate.

următoarele o-liner rezultate în continuu ieșire de progres la fiecare 10 secunde, până când transferul este finalizat, atunci când dd-pid este înlocuit prin procesul-id-dd:

în timp ce ucide -USR1 dd-pid ; nu dorm 10 ; făcut

mai Noi versiuni de GNU dd suport starea=progres opțiune, care permite periodice de imprimare de transfer de statistică la stderr.

Leave A Comment