Dd (UNIX)

ddコマンドとは



ddコマンドは、Unix系システムにおけるデータ操作ツールで、主にブロックデバイスの直接的な読み書きを担います。この特徴により、ハードディスク全体やパーティション単位でのコピー、ブートセクターのバックアップ、データの完全消去といった操作が可能になります。また、コンピュータ・フォレンジックスのような、ディスクの全状態をそのままクローンする必要がある状況でも利用されます。

歴史的背景



ddという名前は、dataset definitionの略とされていますが、実際にはIBMメインフレームのジョブ制御言語(JCL)の「DD文」に由来します。このため、ddコマンドの引数構文は、Unixの一般的なコマンドとは大きく異なっています。

危険性と注意点



ddコマンドは、ディスクへの直接的な書き込みを行うため、通常は管理者権限が必要です。この強力さが、同時に危険性も伴います。入力と出力の指定を間違えるだけで、重要なデータを上書きして消去してしまう可能性があります。そのため、経験豊富なユーザーであっても、ddコマンドの利用には細心の注意が必要です。

オプション



ddコマンドは、さまざまなオプションを指定することで、より詳細な操作が可能です。

入出力オプション


`if=[file]`: 入力ファイルを指定します。標準入力の代わりに、指定したファイルからデータを読み込みます。
`of=[file]`: 出力ファイルを指定します。標準出力の代わりに、指定したファイルへデータを書き出します。

コピーサイズオプション


`count=[blocks]`: 指定したブロック数だけデータをコピーします。`ibs`オプションで指定されたバイト数のブロック単位で処理されます。

開始位置指定オプション


`skip=[blocks]`: 入力ファイルの先頭から、指定したブロック数だけデータをスキップします。
`seek=[blocks]`: 出力ファイルの先頭から、指定したブロック数だけ書き込みをスキップします。

データサイズオプション


`bs=[bytes]`: 一度に読み書きするデータサイズを指定します。
`ibs=[bytes]`: 一度に読み込むデータサイズを指定します。デフォルトは512バイトです。
`obs=[bytes]`: 一度に書き出すデータサイズを指定します。デフォルトは512バイトです。

データ変換オプション


`conv=[CONVERSION]`: データの変換オプションを指定します。
`noerror`: 読み込みエラーが発生しても、処理を継続します。
`sync`: 入力ブロックサイズが`ibs`に満たない場合に、パディングを行います。

使用例



以下に、ddコマンドの具体的な使用例を示します。

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

bash
dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=notrunc,noerror


ハードディスク全体を完全に消去する

bash
dd if=/dev/urandom of=/dev/hda


CDをISOイメージファイルに変換する

bash
dd if=/dev/cdrom of=/home/sam/myCD.iso bs=2048 conv=sync,notrunc


ハードディスクのMBRをバックアップする

bash
dd if=/dev/sda of=/home/sam/MBR.image bs=446 count=1


関連事項



ddrescue: 不良セクタのあるディスクのデータコピーを専門とするツールです。
パーティション: ハードディスクを論理的に分割した領域のことです。
ディスクセクタ: ハードディスクにおける最小のデータ格納単位です。
データの完全消去: データを復元不可能な状態にする技術です。

外部リンク



dd(1) man page(JM Project)

参考資料



* GNU Core Utilities

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。