Dd (Unix)
Author
Albert Floresdd (z anglického disk duplicator, případně disk destroyer) je počítačový program s rozhraním pro příkazový řádek, jehož hlavním účelem je převod a kopírování souborů. Používá se v Unix a operačních systémech unixového typu (například Linux, FreeBSD, Mac OS a další).
V Unixu ovladače zařízení pro hardware (například pevné disky) a speciální soubory (např. /dev/zero nebo /dev/urandom), jsou v systému souborů reprezentovány stejně jako normální soubory; dd může také číst anebo zapisovat z a do těchto souborů, za předpokladu, že funkce je implementována v jejich ovladačích. +more Proto může být dd použit pro úkoly, jako je zálohování boot sektoru pevného disku nebo získání náhodných dat o stanovené velikosti. Program dd může také provádět převody dat během jejich kopírování, a to včetně změny endianity a konverze do a z ASCII a EBCDIC kódování textu. Název dd je narážka na příkaz DD v Job Control Language (JCL) od IBM, podle iniciálů "Data Definition".
Původně byl dd zamýšlen pro převod mezi ASCII a EBCDIC. Objevil se poprvé v Unix verze 5. +more Příkaz dd je specifikován v IEEE Std 1003. 1-2008, který je součástí Single UNIX Specification.
Použití
Příkaz dd může být použit pro mnoho různých účelů. Ve výchozím nastavení dd čte ze standardního vstupu a zapisuje do standardního výstupu. +more Toto chování lze měnit pomocí parametrů if (vstupní soubor) a of (výstupní soubor).
Přenos dat
dd může duplikovat data napříč soubory, zařízeními, diskovými oddíly a svazky. Data mohou být vstupem či výstupem do a z každého z nich. +more Během přenosu mohou být data měněna pomocí parametru conv.
$ dd if=hdx. img of=/dev/hdx bs=2048 conv=noerror,sync | Obnoví pevný disk (nebo třeba paměťovou kartu SD) z dříve vytvořeného obrazu. +more |
---|---|
$ dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=noerror | Klonuje jeden oddíl do druhého. |
$ dd if=/dev/ad0 of=/dev/ad1 bs=1M conv=noerror | Klonuje pevný disk "ad0" na "ad1". |
Přepsání disku
Z bezpečnostních důvodů je někdy nutné vyřazený disk kompletně přepsat.
Příkaz dd může být použit k přepisu disku zápisem nul takto:
$ dd if=/dev/zero of=/dev/sda bs=4k
Jiný způsob je přepis disku pomocí zápisu náhodných dat:
$ dd if=/dev/urandom of=/dev/sda bs=4k
Parametr bs=4k znamená čtení a zápis 4 kb zároveň. Přepsání disku náhodnými daty bude vždy trvat déle, než přepis nulami, protože náhodné údaje musí být vygenerovány. +more Na většině moderních disků přepis nulami zamezí budoucí obnově dat.
Alternativou pro tento úkol je programy shred a wipe, které jsou přítomny v mnoha linuxových distribucích.
Benchmarking výkonu disku
Benchmark test disku a sekvenční analýza systémového výkonu čtení a zápisu pro bloky o velikosti 1024 bajtů:
$ dd if=/dev/zero bs=1024 count=1000000 of=file_1GB $ dd if=file_1GB of=/dev/null bs=1024
Generování souboru s náhodnými daty
K vytvoření souboru ze 100 náhodných bajtů pomocí /dev/random:
$ dd if=/dev/urandom of=myrandom bs=100 count=1
Reference
Externí odkazy
[url=https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html]dd[/url]: manuálová stránka GNU Core Utilities.