Z Wikipedia
dd - uniksowy program do niskopoziomowego kopiowania i konwersji surowych danych (ang. raw data). dd jest używane do kopiowania określonej liczby bajtów lub bloków danych wraz z opcjonalnym konwertowaniem kopiowanych danych (np. zmianą kolejności bajtów, konwersją z EBCDIC do ASCII). Powszechnym wykorzystaniem dd jest do tworzenia kopii boot sektora dysku, odczyt danych ze specjalnych plików takich jak /dev/zero albo /dev/random. Sprawdza się również przy odczycie i zapisie urządzeń blokowych takich jak taśmy magnetyczne.
Ponieważ dd potrafi operować na całych partycjach lub dyskach, jest często wykorzystywane przy gromadzeniu "cyfrowych dowodów", gdzie niezbędne jest odczytanie dysku "bit po bicie". Użycie komendy cp byłoby tu niewystarczające, gdyż dane z usuniętych plików, które nie zostały jeszcze "nadpisane" nie są widoczne dla systemu plików, do którego odwołuje się cp, a który dd pomija.
W GNU/Linuksie jest częścią pakietu GNU Coreutils.
Pochodzenie nazwy
- "convert and copy" → "cc" → "dd"
część podręcznika systemu UNIX z 1975 r. opisująca dd była zatytułowana "dd - convert and copy a file". Ponieważ skrót "cc" od pierwszych liter wyrażenia "copy and convert" był już zajęty przez kompilator języka C (ang. C Compiler), stąd zdaniem niektórych użyto kolejnych liter alfabetu.
- "dd" jest akronimem wyrażenia "data definition" pochodzącego z języka JCL firmy IBM, jednak jego składnia nie ma związku z komendą unixową.
- niektórzy mówią żartobliwie, że dd to skrót od "destroy disk" lub "delete data", ponieważ omyłkowa zamiana wartości parametrów 'if' (ang. input file - plik wejściowy) oraz 'of' (ang. output file - plik wyjściowy) może zniszczyć dane (nadpisując dane z dysku źródłowego nieopatrznie użytego jako docelowy).
Składnia polecenia dd
dd if=nazwa_pliku_wejściowego of=nazwa_pliku_wyjściowego
W rodzinie systemów UNIX obowiązuje zasada, aby stosować jednakową składnię dla wszystkich komend linii poleceń. Twórcy dd złamali tę zasadę rzekomo wzorując składnię dd na składni języka JCL. Zamiast uniksowej składni "-opcja wartość" dd używa składni "opcja=wartość". Ponadto wejście programu dd oznaczamy opcją "if" (ang. input file - plik wejściowy), podczas gdy większość komend pobiera nazwę wejścia bez dodatkowych oznaczeń. W przypadku wyjścia programu "of" (ang. output file - plik wyjściowy) sytuacja jest analogiczna. Innymi słowy w dd stosowane są parametry kluczowe, a nie pozycyjne.
Przykłady wykorzystania
dd if=/dev/cdrom of=/home/user/obraz_plyty.iso
gdzie /dev/cdrom jest plikiem urządzenia odczytującego CD-ROM, a /home/user/obraz_plyty.iso plikiem wynikowym.
- Nagrywanie obrazu dyskietki na dyskietkę:
dd if=obraz_dyskietki.img of=/dev/fd0
obraz_dyskietki.img - nazwa plilku zawierającego obraz dyskietki./dev/fd0 - napęd dyskietek
- Tworzenie kopii MBR dysku:
dd if=/dev/hda of=kopia_mbr bs=512 count=1
zapiszę kopie MBR pierwszego dysku (hda) w pliku kopia_mbr
- Kasowanie całego dysku (wraz z MBR i wszystkimi partycjami) przez nadpisanie losowymi danymi:
dd if=/dev/urandom of=/dev/sdb
/dev/sdb - nazwa dysku który chcemy skasować (np. dysku usb).
- Tworzenie pliku o rozmiarze 1 GB wypełnionego losowymi danymi.
dd if=/dev/urandom of=duzy_plik bs=512 count=2097152
Ponieważ 1GB to 1024*1024*1024 = 1073741824 B, a parametrem bs=512 określiliśmy pożądany rozmiar bloku danych na 512 B, stąd ilość kopiowanych bloków danych musi wynosić: 1073741824 / 512 = 2097152 co określa parametr count=2097152.
512 bajtów jest domyślnym rozmiarem bloku.
Zobacz też
Linki zewnętrzne