dd (UNIX)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

ddUNIXLinuxなどのOS上でファイルシステム等のデータに直接アクセスを行い、コピーや変換を行うプログラムである。IBM社のJCL上に実装されていたプログラムのインターフェースを模倣しており、呼称はデータ定義(dataset definition)の短縮形である。

ddの主な機能は指定されたバイト数もしくはブロック数のデータのコピーであり、この機能は、ハードディスク(全体もしくはパーティション単位、またはブートセクター等)のバックアップや、/dev/zero/dev/randomを用いて指定された領域を完全消去するために利用される。

また、犯罪捜査や企業の内部調査のために行われるコンピュータ・フォレンジックスにおいて、ハードディスク全体を解析用のハードディスクにコピーする作業にもこのプログラムが使われることがある。これは、オペレーティングシステムで通常用いられるcpコマンドや、Windows Explorer等のファイルマネージャでは、削除痕跡を含む未利用セクターのデータがコピーできないからである。

一部ユーザの間では、ddはdata destroyer(データ破壊プログラム)であると皮肉を込めて呼ばれている。これは入出力を指定するコマンドライン・スイッチを逆に指定してしまうことで、ハードディスク全体をコピーするのでは無く消去してしまうような結果をもたらしてしまうからである。

コマンドラインに指定できるオプション[編集]

入出力を指定するオプション

  • if=[file] : 標準入力の代わりに、ファイル file から読み込む
  • of=[file] : 標準出力の代わりに、ファイル file へ書き出す

コピーするサイズを指定するオプション

  • count=[blocks] : ibs バイトのブロック blocks 個分だけ入力ファイルをコピーする

読み書きの開始位置を指定するオプション

  • skip=[blocks] : ibs バイトのブロック blocks 個分だけ入力ファイルの先頭をスキップする
  • seek=[blocks] : 出力の先頭にある obs バイトのブロック blocks 個分を書き出さない

1回の読み書きのデータサイズを指定するオプション

  • bs=[bytes] : 一 度に bytes バイトずつ読み込みと書き出しをする
  • ibs=[bytes] : 一度に bytes バイトずつ読み込む。デフォルトは 512
  • obs=[bytes] : 一度に bytes バイトずつ書き出す。デフォルトは 512

オンザフライのデータ変換を指定するオプション

  • conv=[CONVERSION]
    noerror : 読み込みエラーが発生しても継続する
    sync : 入力ブロックサイズがibsに指定されていないバイト数に満たないとき、パディングを行う

使用例[編集]

ハードディスク上のパーティションを、別のディスクにコピーする

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

関連項目[編集]

外部リンク[編集]

  • dd(1) man page(JM Project)
  • dd(1M) man page(SunOS リファレンス・マニュアル)
  • dd(1) man page(HP-UX リファレンス)