Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ddはLinuxにおける最も重要なコマンドの一つで、主にハードディスクやパーティションのバックアップに活用されます。正しく使えば、あるパーティションから別のパーティションへデータを書き込んだり、ファイルを使ったさまざまな処理を行ったりできる強力なツールです。この記事では、ddコマンドを効果的に使いこなすための方法を詳しく解説します。

Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ddコマンドの歴史

ddコマンドは、1970年代にAT&Tベル研究所のコンピュータ科学者であるケン・トンプソンによって開発されました。Unixベースのシステム向けに作られたこのコマンドの名前は、IBMのジョブ制御言語(JCL)にある「DD」というステートメントへの言及として選ばれたものです。実際、ddコマンドの構文はジョブ制御言語のステートメントと非常によく似ていることで知られています。

当初、このコマンドはASCIIとEBCDICを相互に変換するためのユーティリティとして設計されました。1974年、オペレーティングシステムの第5版(5th Edition)のリリース時に、初めてUnixに組み込まれました。

また、ddは誤った使い方をするとハードディスク上のデータを破壊してしまう可能性があるため、Unixコミュニティでは冗談めかして「disk destroyer(ディスクデストロイヤー)」とも呼ばれています。

基本的なオペランド

コマンドの背景と、誤用時の危険性について理解したところで、次は各Linuxディストリビューションのユーザーがddの機能を最大限に活用する方法を見ていきましょう。

まずは--helpフラグを使ってマニュアルを確認します。

dd --help
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ddコマンドで最もよく使われるオペランドはifとofの2つです。それぞれ「input file(入力ファイル)」と「output file(出力ファイル)」を意味しています。ifはコピー元の場所を指定し、ofは入力先のデータを保存する場所を指定します。

dd if=<入力ファイル> of=<出力ファイル>

入力元・出力先として最も一般的なのは、ハードディスク、パーティション、そしてディスクイメージです。

コマンドを実行する前に、fdiskユーティリティを使ってシステム上のパーティションを確認しておくと便利です。以下のように-lフラグを付けるだけで簡単に確認できます。

sudo fdisk -l
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

例えば、「/dev/sda」ドライブの内容を「/dev/sdb」ドライブへ丸ごとコピーしたい場合は、ifに「/dev/sda」を、ofに「/dev/sdb」を指定して次のコマンドを実行します。

dd if=/dev/sda of=/dev/sdb
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ディスクイメージの作成

ddコマンドの代表的な活用例の一つが、「.img」形式のディスクイメージを作成することです。Linuxシステム上のデータをバックアップする際に非常に役立ち、ハードディスク全体をバックアップする最も手軽で迅速な方法と言えるでしょう。

基本的な考え方は同じで、ifには「/dev/sda」ドライブを、ofにはハードディスクの内容を保存する「.img」ファイルを指定します。

dd if=/dev/sda of=example.img
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ディスクイメージをパーティションに書き込む

ディスクイメージの作成が簡単であるのと同様に、その逆の操作、つまりイメージからの復元も簡単に行えます。

この場合、ディスクイメージファイルが入力ファイルとなり、書き込み先の新しいパーティションが出力ファイルとなります。次のコマンドで、ディスクイメージのデータが「/dev/sdb」パーティションへ書き込まれます。

dd if=example.img of=/dev/sdb
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

圧縮ディスクイメージの作成

フルサイズのハードディスクからディスクイメージを作成すると、最終的なファイルサイズが非常に大きくなることが予想されます。そこで便利なのが、ddユーティリティに備わっている圧縮ディスクイメージ作成機能です。

圧縮ディスクイメージは、パイプ|を使って作成できます。入力ファイルの内容を受け取り、-cフラグを付けたgzipコマンドに渡すことで、内容が「.gz」ファイルにまとめられます。

dd if=/dev/sda | gzip -c > image.gz
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ブロックサイズの指定

ddコマンドの処理速度を調整することもできます。これには、ブロックサイズを表すbsオペランドを使用します。ブロックサイズとは、ddが一度に出力ファイルへコピーするバイト数のことです。1024バイトの倍数で指定し、デフォルト値は512バイトに設定されています。ブロックサイズを大きくするほど、データの出力ファイルへの書き込み速度は速くなります。

例えば、ブロックサイズを2048に設定する場合は次のように記述します。

dd if=/dev/sda of=example.img bs=2048

ブロックサイズはキロバイト単位で指定することも可能です。

dd if=/dev/sda of=example.img bs=2048K
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ハードディスクの完全消去(ワイプ)

ddはハードディスクを完全に消去する用途にも使えます。「/dev/zero」または「/dev/urandom」からゼロやランダムな文字を読み出し、それをハードディスクやパーティションに上書き保存することで、既存のデータを書き潰します。ハードディスクを売却したり処分したりする際に、データが簡単には復元されないことを確実にしたい場合に非常に有効な方法です。

ゼロでハードディスクを上書きする場合:

dd if=/dev/zero of=/dev/sdb
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

ランダムな文字で上書きすることもできます。

dd if=/dev/urandom of=/dev/sdb
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

起動可能なUSBドライブの作成

「.iso」ファイルを使って起動可能なUSBフラッシュドライブを作成するのも、ddコマンドならシンプルです。

dd if=os.iso of=<USBドライブの場所>
Linuxのddコマンド使い方ガイド!ディスクバックアップから起動用USB作成まで

まとめ

ハードドライブ、パーティション、ディスクイメージファイルに関わるあらゆる作業で活躍することから、ddコマンドはまさに「アーミーナイフ(万能工具)」のような存在だと言えるでしょう。ハードディスクを壊さないよう注意さえすれば、ハードディスクやUSBドライブの消去から圧縮バックアップの作成まで、幅広いタスクに対応するシンプルで強力なツールとして活用できます。

  1. Linuxのssコマンドでネットワーク接続を監視する方法【基本から実践テクニックまで】

    Linuxを使っていると、ネットワークの状態をもっと詳しく知りたい場面に必ず出会います。そうしたニーズに応えられるツールは数多く存在しますが、中には扱いが複雑なものもあります。ssコマンドは多くのLinuxマシンに標準でインストールされているため、その使い方を知っておくと非常に便利です。ssコマンドとは?2文字だけのコマンド名は一見謎めいて見えますが、実際はとてもシンプルです。多くのLinux/Unixコマンドと同じように、コマンド名はその機能を表す略語になっています。「ss」は「Socket Statistics(ソケット統計)」の略です。Socket Statisticsは、従来のnets

  2. Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

    Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。 watchコマンドの基本構文 watchコマンドの構文は以下のとおりです。 watch オプション コマンド 各要素の意味は次のとおりです。 オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。 コマンド: watchが繰り返し実行