dd je command-line utilita pre Unix a Unix-like operačné systémy ktorej hlavným účelom je konvertovať a kopírovať súbory. V Unix-like systémoch sa zobrazujú ovládače zariadení pre hardvér (ako sú jednotky pevného disku) a špeciálne súbory zariadení (napríklad /dev/zero a /dev/random) rovnako ako bežné súbory; dd môže tiež čítať a / alebo zapisovať z / do týchto súborov za predpokladu, že je táto funkcia implementovaná v ich príslušnom ovládači. dd sa dá teda použiť a je jeden z nalepších, dostupných, klonovacích nástrojov zdarma. V nasledujúcich riadkoch spomeniem rôzne použitia tohto programu práve pri klonovaní diskov.
POZOR: Neodporúča sa využívanie dd na živom file-systéme (napríklad počas behu operačného systému, zavedeného práve z tohto disku) a celkom reálne hrozí poškodenie súborov. Dôvodom je absolutné nechápanie zmien na strane dd ktoré môžu v živom file-systéme prebiehať a tým pádom aj ich nulová korekcia zo strany programu (napr. pri databázach).
Rôzne použitia programu dd
Niektoré uvedené príklady sa budú opierať o fakt, že na sda je disk plný dát a na sdb je prázdny disk. Systém (aby sa zamedzilo vyššie uvedenému) je live, nabótovaný a používaný z USB kľúča (napr: Linux Mint, Debian, Ubuntu a pod.).
Jednoduché spustenie klonovania bez parametrov.
dd if=/dev/sda of=/dev/sdb
Jednoduché spustenie klonovania disku do súboru (imidžu).
dd if=/dev/sda of=obraz.img
Obnovenie obrazu z imidžu späť na disk.
dd if=obraz.img of=/dev/sdb
Pre ušetrenie miesta, môžeme komprimovať imidž za behu.
dd if=/dev/sda | gzip -c > /obraz.img
Následne obnovovanie imidžu späť do disku
gunzip -c /obraz.img.gz | dd of=/dev/sdb
Poslanie imidžu po sieti prostredníctvom ssh ako prúd dát.
dd if=/dev/sda | ssh user@server "cat > zaloha.img"
Poslanie imidžu po sieti prostredníctvom ssh ako prúd komprimovaných dát.
dd if=/dev/sda | gzip -c --fast | ssh user@host.domain 'dd of=/home/user/sda.img.gz'
Obnovenie imidžu zo siete na lokálny disk
ssh user@host.domain 'dd if=/home/user/sda.img.gz' | gunzip -1 - | dd of=/dev/sdb
Tvorba ISO imidžu z CD/DVD-ROM
dd if=/dev/dvd of=/opt/my_linux_image.iso
Parametre programu dd
conv=sync – hovorí dd, že každý blok má byť vyplnený nulami v prípade, že dáta nie je možné zo zdroju čítať (napr.: bad-blocks) tak, že je zachovaná aspoň pôvodná veľkosť bloku.
conv=sync,noerror – nezastavovať vykonávanie príkazu v prípade narazenia na chybu (napr. pri čítaní)
bs=1M | 10M | 512 – block size – veľkosť bloku. Je „žiadúce“ nastaviť správnu veľkosť podľa typu média z/do ktorého kopírujeme pre optimálizáciu rýchlosti.