ブロック単位でファイルのコピーと変換:ddコマンド

 Linuxのシステム管理やデータ管理において、ddコマンドは非常に強力で多用途なツールとして知られています。このコマンドは、ファイルやディスクデバイスのコピーや変換をブロック単位で行うことができ、システムのバックアップ、データの復元、ディスクのクローン作成など、さまざまなシナリオで利用されます。

 ddコマンドは、その柔軟性と精度から、システム管理者にとって不可欠なツールの一つです。しかし、その強力さゆえに、使用方法を誤るとデータの損失やシステムの破損につながる可能性もあります。

ddコマンドの概要

 「dd」コマンドは、指定された入力ファイル(またはデバイス)からデータを読み取り、それを指定された出力ファイル(またはデバイス)に書き込むためのユーティリティです。データのコピーや変換をブロック単位で行うことができ、ディスクイメージの作成、データのバックアップ、ディスクの書き込み速度テストなどに広く使用されます。

主なオプションと説明

オプション説明
if入力ファイル(input file)を指定します。デフォルトは標準入力です。
of出力ファイル(output file)を指定します。デフォルトは標準出力です。
bsブロックサイズ(block size)を指定します。デフォルトは512バイトです。
countコピーするブロックの数を指定します。
skip入力ファイルの先頭から読み飛ばすブロック数を指定します。
seek出力ファイルの先頭から書き飛ばすブロック数を指定します。
convデータ変換オプションを指定します。例: conv=notrunc(出力ファイルを切り詰めない)、conv=noerror(エラーを無視して続行する)、conv=sync(入力データをブロックサイズにパディングする)
主なオプションと説明

コマンドの使用例と解説

1.基本的なファイルコピー

 「inputfile」から「outputfile」にデータをコピーします。ブロックサイズはデフォルトの512バイトが使用されます。

dd if=inputfile of=outputfile
2.ブロックサイズとコピーするブロック数の指定

 ブロックサイズを1MBに設定し、100ブロック分のデータをコピーします。つまり、合計100MBのデータをコピーします。

dd if=inputfile of=outputfile bs=1M count=100
3.ディスクのバックアップ

 「/dev/sda」デバイス(通常はハードディスク全体)から4MBブロック単位でデータを読み取り、「/mnt/backup/disk_backup.img」にバックアップを作成します。

dd if=/dev/sda of=/mnt/backup/disk_backup.img bs=4M
4.ISOイメージのUSBドライブへの書き込み

 「linux_distro.iso」ファイルを4MBブロック単位で「/dev/sdb」デバイス(通常はUSBドライブ)に書き込みます。「status=progress」オプションを追加することで、進行状況が表示されます。

dd if=linux_distro.iso of=/dev/sdb bs=4M status=progress
5.ディスクの消去(ゼロフィル)

 「/dev/zero」から「/dev/sdb」に1MBブロック単位でデータをコピーし、ディスク全体をゼロで埋めます。これにより、ディスクが消去されます。

dd if=/dev/zero of=/dev/sdb bs=1M

まとめ

 「dd」コマンドは、強力で柔軟なデータコピーおよび変換ツールです。以下の表を参考に、目的に応じて適切なオプションを使用することで、効率的にデータのコピーや変換を行うことができます。

これらのオプションを駆使することで、「dd」コマンドを使用したさまざまなデータ操作が可能です。

オプション説明
if入力ファイルを指定
of出力ファイルを指定
bsブロックサイズを指定
countコピーするブロックの数を指定
skip入力ファイルの先頭から読み飛ばすブロック数を指定
seek出力ファイルの先頭から書き飛ばすブロック数を指定
convデータ変換オプションを指定
主なオプションと説明