dd (Unix)
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
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
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.
$ 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
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
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
Na vytvorenie súboru zo 100 náhodných bajtov pomocou /dev/random:
$ dd if=/dev/urandom of=myrandom bs=100 count=1
Referencie
- . Dostupné online.
- . Dostupné online.
- . Dostupné online.
- Dennis Ritchie. Re: origin of the UNIX dd command [online]. Feb 17, 2004, [cit. 2016-01-10]. Dostupné online.
- Barry Shein. Re: etymology of the Unix "dd" command [online]. Apr 22, 1990, [cit. 2016-07-14]. Dostupné online.
- . Dostupné online.
- Overwriting Hard Drive Data: The Great Wiping Controversy. Lecture Notes in Computer Science, 2008, s. 243–257. Dostupné online [cit. 2012-03-07]. DOI: 10.1007/978-3-540-89862-7_21.
- . Dostupné online.
Externé odkazy
- Dd: manuálová stránka GNU Core Utilities.