Dd (UNIX)

ddはUnix系のシステムにあるプログラム（コマンド）で、データのコピーや変換をブロックデバイスを直接読み書きして行うことが特徴である。dataset definitionの略であるが、IBMのメインフレームのJob Control Language（ジョブ制御言語、JCL）の「DD文」（DD statement）に由来するため、引数の構文が、Unixの一般的なコマンドの引数のそれとは激しく異なっている（datasetというのはメインフレーム用語）。
ddの主な機能は指定されたバイト数もしくはブロック数のデータのコピーであり、この機能は、ハードディスク（全体もしくはパーティション単位、またはブートセクター等）のバックアップや、/dev/zeroや/dev/randomを用いて指定された領域を完全消去するために利用される。同様にディスクの（可能な限り）全状態をそのままクローンしたい、コンピュータ・フォレンジックスなどの場合にも使われる。
ddコマンドが行うようなディスクの直接の読み書きには、通常は管理者権限が必要であり、従って危険なコマンドであっても簡単に実行できてしまう状態で作業していることが多い。そしてddは、例えば、入力と出力の指定をうっかり逆にしただけで（具体的には "of" と "if" の、QWERTYキーボードでは隣の1文字の違いである）、大事なデータをバックアップする代わりに、まっさらなディスクの内容をそれに上書きして消してしまう、という恐ろしいことを起こし得る。そのためしばしばベテランは、data destroyer（あるいはdisk destroyer、destroyer=破壊者）の略である、などという。なお、copy commandあるいはcopy and convertの略でccにしようとしたが、C言語コンパイラ（ないしコンパイラドライバ）のccがあったのでひとつずらしてddにした、という説が流布していたが、これは誤りであることがUNIXの開発者であるデニス・リッチー氏による投稿で確定している。
コマンドラインに指定できるオプション.
入出力を指定するオプション
コピーするサイズを指定するオプション
読み書きの開始位置を指定するオプション
1回の読み書きのデータサイズを指定するオプション
オンザフライのデータ変換を指定するオプション
使用例.
ハードディスク上のパーティションを、別のディスクにコピーする
 dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=notrunc,noerror
ハードディスク全体を完全消去する
 dd if=/dev/urandom of=/dev/hda
CDをiso仮想イメージファイルに変換する
 dd if=/dev/cdrom of=/home/sam/myCD.iso bs=2048 conv=sync,notrunc
ハードディスクのMBRをバックアップする
 dd if=/dev/sda of=/home/sam/MBR.image bs=446 count=1