Linuxコマンド · 1 min read · Sep 19, 2025

初心者のためのLinux ddコマンドの説明 (8つの例)

ddコマンドは、Linuxシステムでの低レベルのデータコピーと変換に使用される強力なユーティリティです。これは「データ複製器」を意味し、ファイル、パーティション、または全ディスクの正確なコピーを作成するためにしばしば使用され、バックアップの作成、ドライブのクローン作成、またはディスクイメージを物理メディアに書き込むなどのタスクに役立ちます。このコマンドは、ファイルやデバイス間でデータをコピーおよび変換でき、ブロックサイズの制御、データのスキップまたはシーク、さらには圧縮やバイトスワッピングのようなフィルターの適用オプションがあります。このような基本的なレベルで動作する能力のために、ddは注意して使用する必要があります。不適切な使用はデータの損失や破損を引き起こす可能性があります。

このチュートリアルでは、いくつかのわかりやすい例を使ってツールの使い方を説明します。しかし、その前に、ここで言及されているすべての例はUbuntu 24.04でテストされていることを述べておく価値があります。

Linux ddコマンド

要するに、ddコマンドはファイルをコピーおよび変換することができます。このツールは、どのような形式を希望するかを指定するために使用できるいくつかのオペランドを提供します。以下は、そのマニュアルページに記載されているコマンドの一般的な構文です:

dd [OPERAND]...
dd OPTION

ddコマンドを使用してISOファイルからブータブルUSBドライブを作成する

Linuxにおけるddコマンドの一般的な使用法は、ISOファイルからブータブルUSBドライブを作成することです。これは、オペレーティングシステムをインストールするためにUSBスティックを準備する際によく行われます。コマンドは次のようになります:

sudo dd if=/path/to/your.iso of=/dev/sdX bs=4M status=progress && sync

この例では:

  • if=/path/to/your.iso は入力ファイルを指定し、ISOイメージです。
  • of=/dev/sdX は出力ファイルを指定し、USBドライブです(XをUSBデバイスの適切な文字に置き換えます)。
  • bs=4M はブロックサイズを4メガバイトに設定し、コピー処理を最適化します。
  • status=progress はコピーの進行状況に関するリアルタイムの更新を提供します。
  • sync はプロセスが完了する前にすべてのデータがUSBに書き込まれることを保証します。

このコマンドは、ISOファイルに含まれるオペレーティングシステムをインストールするために使用できるブータブルUSBドライブを作成します。

よくある質問

以下のQ&A形式の例は、ddコマンドの動作について良いアイデアを提供するはずです。

Q1. ddコマンドを使用して入力テキストのケースを変更するには?

小文字で書かれたテキストの行があり、それをすぐに大文字に変換する必要があるとします。convコマンドラインオプション(その値としてucaseを使用)を使用できます。

以下はその例です:

上記のスクリーンショットは、コマンドと入力テキストを示しています。Ctrl+dのキーの組み合わせを使用して、ddに入力の入力が完了したことを伝え、その後、コマンドは次の出力を生成しました:

入力テキストが小文字から大文字に変換されたことがわかります。最後の3行は、いくつかの操作関連の統計です。

注意:同様に、lcaseの値を使用して大文字のテキストを小文字に変換できます。

Q2. 代わりにファイルから読み書きするには?

上記の最初の例では、標準入力(stdin)を介してテキストを入力しました。しかし、常に入力ファイルと出力ファイルを使用できます。入力ファイルと出力ファイルの名前を指定するには、ifおよびofコマンドラインオプションを使用します。

たとえば、file1のテキストのケースを変換し、それをfile2に書き込む場合は、次のようにできます:

dd if=file1 of=file2 conv=ucase

Q3. 入力を読み取る際にテキストをスキップするには?

入力テキストを読み取る際に最初のバイトをスキップするようにddに指示することができます。これは、数値値を必要とするskipオプションを使用して行うことができます。たとえば、この値が’N’である場合、ddは入力の最初でN ibsサイズのブロックをスキップします。これにより、’ibs’という別のコマンドラインddオプションが登場します。その値は、ツールが一度に読み取るバイト数を指定します(デフォルトは512です)。

したがって、入力ファイルの最初の4バイトをスキップしたい場合は、まずitを4に設定し、次にスキップ値として1を使用します。これにより、ツールは入力ファイルを読み取る際に4バイトの1ブロックをスキップします。

したがって、テキストhey,はfile1を読み取る際にスキップされました - そのためfile2には表示されませんでした。

Q4. 出力で入力バイトのペアを入れ替えるには?

必要がある場合、ddを使用して入力バイトのペアをすべて入れ替えることもできます。これは、convコマンドラインオプションの値としてswabを使用することで実現できます。以下のスクリーンショットがより明確にします:

Q5. 出力ファイルがすでに存在しない場合のみddを機能させるには?

出力ファイルがすでに存在する場合、ddコマンドが何もしないようにする必要がある場合、convオプションのexcl値がこの条件を強制することができます。

以下のスクリーンショットは、使用例を示しています:

Q6. 出力ファイルが追加モードで更新されることを確認するには?

デフォルトでは、ddは出力ファイルを上書きします(存在する場合)。しかし、代わりにテキストを追加したい場合は、oflagフラグにappendの値を、convオプションにnotruncを使用します。

たとえば:

dd if=file1 of=file3 oflag=append conv=notrunc

上記のコマンドの実行例です:

出力ファイルが追加モードで更新されることを確認するには

Q7. ddが出力ファイルを作成しないようにするには?

出力ファイルがコマンドで指定されたファイルがすでに存在しない場合に、ddコマンドが出力ファイルを作成しないように強制することもできます。これは、convコマンドラインオプションのnocreat値を使用することで実現できます。

たとえば:

Q8. stderrに印刷される情報のレベルを制御するには?

コマンドがstderrに印刷する情報の量を制限したい場合もあります。これは、statusコマンドラインオプションを使用して行うことができます。たとえば、エラーメッセージ以外のすべてを抑制したい場合は、このコマンドラインオプションにnoneの値を渡すことができます:

dd if=file1 of=file3 status=none

他の利用可能な値はnoxferprogressです。以下は、statusオプションに関するマニュアルページの記載内容です:

status=LEVEL
              stderrに印刷する情報のLEVEL; 'none'はエラーメッセージ以外のすべてを抑制し、'noxfer'は最終転送統計を抑制し、'progress'は定期的な転送統計を表示します。

結論

このチュートリアルで説明した例は、ddコマンドができることを探る際の表面をほんの少し触れたに過ぎません。ツールを使用して仮想ファイルシステムやハードドライブまたはシステムパーティションのバックアップを作成することができることを示すために、もう少し情報を提供します。ddに関する詳細情報は、そのマニュアルページを参照してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。