dd (Unix)

z Wikipédie, slobodnej encyklopédie
(Presmerované z Dd)

dd je počítačový program s rozhraním pre príkazový riadok, ktorého hlavným účelom je prevod a kopírovanie súborov. Používa sa v Unixe a operačných systémoch unixového typu (napríklad Linux, FreeBSD, Mac OS a ďalšie). [1]

V Unixe ovládače zariadení pre hardware (napríklad pevné disky) a špeciálne súbory (napr. /dev/zero alebo /dev/urandom), sú v systéme súborov reprezentované rovnako ako normálne súbory; dd môže tiež čítať alebo zapisovať z a do týchto súborov, za predpokladu, že funkcia je implementovaná v ich ovládačoch. Preto môže byť dd použitý pre úlohy, ako je zálohovanie boot sektora pevného disku alebo získania náhodných dát o stanovenej veľkosti. Program dd môže tiež vykonávať presuny dát počas ich kopírovania, a to vrátane zmeny endianity a konverzie do a z ASCII a EBCDIC kódovania textu.[2] Názov dd je narážka na vyhlásenie DD v Job Control Language (JCL) od IBM,[3][4] podľa iniciálok „Data Definition“.[5] [6]

Pôvodne bol dd zamýšľaný na prevod medzi ASCII a EBCDIC. Objavil sa prvýkrát v Unix verzii 5. Príkaz dd je špecifikovaný v IEEE Std 1003.1-2008, ktorý je súčasťou Single UNIX Specification.

Použitie[upraviť | upraviť zdroj]

Príkaz dd môže byť použitý pre mnoho rôznych účelov. V predvolenom nastavení dd číta zo štandardného vstupu a zapisuje do štandardného výstupu. Toto správanie je možné meniť pomocou if (vstupný súbor) a of (výstupný súbor).

Prenos dát[upraviť | upraviť zdroj]

Dd môže duplikovať dáta naprieč súbormi, zariadeniami, diskovými oddielmi a zväzkami. Dáta môžu byť vstupom či výstupom do a z každého z nich. Počas prenosu môžu byť dáta menené pomocou parametra conv.

Formy dd pre prenos dát
$ dd if=/dev/sr0 of=myCD.iso bs=2048 conv=noerror,sync
Vytvorí ISO obraz disku z disku CD-ROM
$ dd if=/dev/myCD.iso of=/dev/sr0 bs=2048 conv=noerror,sync
Obnoví pevný disk (alebo napríklad pamäťovú kartu SD) z predtým vytvoreného obrazu.
$ dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=noerror
Klonom jeden oddiel do druhého.
$ dd if=/dev/ad0 of=/dev/ad1 bs=1M conv=noerror
Klonom pevný disk „AD0“ na „ad1“.

Parameter noerror programu oznamuje, že používateľ chce pokračovať, pokiaľ sa objaví chyba.

Prepísanie disku[upraviť | upraviť zdroj]

Z bezpečnostných dôvodov je niekedy nutné vyradený disk kompletne prepísať.

Príkaz dd môže byť použitý k prepisu disku zápisom núl takto:

$ dd if=/dev/zero of=/dev/sda bs=4k

Iný spôsob je prepis disku pomocou zápisu náhodných dát:

$ dd if=/dev/urandom of=/dev/sda bs=4k

Parameter bs = 4k znamená čítanie a zápis 4 kb zároveň. Prepísanie disku náhodnými dátami bude vždy trvať dlhšie, než prepis nulami, pretože náhodné údaje musia byť vygenerované. Na väčšine moderných diskov prepis nulami zamedzí budúcej obnove dát.[7]

Alternatívou pre túto úlohu sú programy shred a wipe[8], ktoré sú prítomné v mnohých linuxových distribúciách.

Benchmarking výkonu disku[upraviť | upraviť zdroj]

Benchmark test disku a sekvenčná analýza systémového výkonu čítania a zápisu pre bloky o veľkosti 1024 bajtov:

$ dd if=/dev/zero bs=1024 count=1000000 of=file_1GB
$ dd if=file_1GB of=/dev/null bs=1024

Generovanie súboru s náhodnými dátami[upraviť | upraviť zdroj]

Na vytvorenie súboru zo 100 náhodných bajtov pomocou /dev/random:

$ dd if=/dev/urandom of=myrandom bs=100 count=1

Referencie[upraviť | upraviť zdroj]

  1. . Dostupné online.
  2. Archivovaná kópia [online]. [Cit. 2019-07-19]. Dostupné online. Archivované 2008-02-14 z originálu.
  3. . Dostupné online.
  4. RITCHIE, Dennis. Re: origin of the UNIX dd command [online]. groups.google.com, 2004-02-17, [cit. 2023-12-09]. Dostupné online.
  5. Barry Shein. Re: etymology of the Unix "dd" command [online]. Apr 22, 1990, [cit. 2016-07-14]. Dostupné online.
  6. . Dostupné online.
  7. Overwriting Hard Drive Data: The Great Wiping Controversy. Lecture Notes in Computer Science, 2008, s. 243–257. Dostupné online [cit. 2012-03-07]. DOI10.1007/978-3-540-89862-7_21. Archivované 2019-09-24 na Wayback Machine
  8. . Dostupné online.

Externé odkazy[upraviť | upraviť zdroj]

Zdroj[upraviť | upraviť zdroj]

  • Tento článok je čiastočný alebo úplný preklad článku Dd (Unix) na českej Wikipédii.
  • Tento článok je čiastočný alebo úplný preklad článku Dd (Unix) na anglickej Wikipédii.