概要
本記事では、指定されたフォーマットでファイルやデータの変換およびコピーを行う dd
コマンドについて解説します。
dd コマンド
dd
コマンドは、指定されたフォーマットでファイルやデータの変換およびコピーを行うためのユーティリティです。
このコマンドは、ディスクイメージの作成やバックアップ、ディスクのコピー、データの変換などに使用されます。
注意点
of
に指定するデバイスファイルやパスには十分な注意が必要です。
of
にある既存のデータは上書きされてしまうため、誤って指定するとデータの損失を引き起こす可能性があります。
実行前にコマンドを慎重に確認してください。
基本構文
dd
コマンドの基本構文は以下の通りです:
if
は入力ファイル (input file) を指定します。標準入力を使用する場合は省略できます。of
は出力ファイル (output file) を指定します。標準出力を使用する場合は省略できます。
使用例
ディスク全体のバックアップ
ディスク全体をバックアップする例です。
以下のコマンドは、/dev/sda
ディスク全体を backup.img
ファイルにバックアップします。
ディスクイメージの復元
バックアップしたディスクイメージを元のディスクに復元する例です。
以下のコマンドは、backup.img
を /dev/sda
に復元します。
ブート可能な USB ドライブの作成
ISO イメージファイルからブート可能な USB ドライブを作成する例です。
以下のコマンドは、linux.iso
を /dev/sdb
に書き込みます。
データの変換
テキストファイルの内容を大文字に変換して新しいファイルに出力する例です。
オプション
入出力に関するオプション
オプション | 説明 |
---|---|
bs=BYTES |
一度に読み書きするバイト数を指定します (デフォルト: 512 バイト)。ibs と obs を上書きします。 |
ibs=BYTES |
一度に読み込むバイト数を指定します (デフォルト: 512 バイト) |
obs=BYTES |
一度に書き込むバイト数を指定します (デフォルト: 512 バイト) |
cbs=BYTES |
変換時に一度に処理するバイト数を指定します。 |
conv=CONVS |
CONVS に従ってファイルを変換します。 |
iflag=FLAGS |
FLAGS に従って読み込みを行います。 |
oflag=FLAGS |
FLAGS に従って書き込みを行います。 |
if=FILE |
標準入力の代わりに FILE から読み込みます。 |
of=FILE |
標準出力の代わりに FILE へ書き込みます。 |
count=N |
入力ブロックの数を N ブロックだけコピーします。 |
skip=N |
入力の先頭から N ブロックをスキップします。 |
seek=N |
出力の先頭から N ブロックをスキップします。 |
status=LEVEL |
標準エラー出力に表示する情報のレベルを指定します。 |
none : エラーメッセージ以外を抑制します。 |
|
noxfer : 最終的な転送統計を抑制します。 |
|
progress : 定期的に転送統計を表示します。 |
ブロックサイズの指定方法
読み込み、書き込み、変換処理はブロック単位で行います。
ブロックのサイズはデフォルトは 512 バイトですが、bs=BYTES, ibs=BYTES, obs=BYTES, cbs=BYTES
引数で変更できます。
指定する際の接頭辞は以下のようになります:
接尾辞 | バイト数 |
---|---|
c |
1 |
w |
2 |
b |
2^9=512 |
K |
2^10 |
M, xM |
2^20 |
G |
2^30 |
T |
2^40 |
P |
2^50 |
E |
2^60 |
Z |
2^70 |
Y |
2^80 |
kB |
10^3 |
MB |
10^6 |
GB |
10^9 |
変換ルールに関する指定方法
conv=CONVS
に指定できる変換方法を以下に示します。
複数指定する場合は、カンマで区切ります。
記号 | 説明 |
---|---|
ascii |
EBCDIC から ASCII へ変換します。 |
ebcdic |
ASCII から EBCDIC へ変換します。 |
ibm |
ASCII から代替 EBCDIC へ変換します。 |
block |
改行区切りの入力データが cbs サイズを超過する場合は切り捨て、不足する場合は空白で埋めます。 |
unblock |
改行区切りの入力データを cbs サイズの固定長とみなし、末尾の空白は改行で変換します。 |
lcase |
大文字を小文字に変換します。 |
ucase |
小文字を大文字に変換します。 |
sparse |
NUL 文字はスキップする。 |
swab |
入力バイトの ペアをすべて入れ替えます。 |
sync |
入力ブロックを ibs サイズになるよう 0 で埋めます。 |
excl |
出力ファイルが既に存在する場合は失敗します。 |
nocreat |
出力ファイルを作成しません。 |
notrunc |
出力ファイルを切り詰めません。 |
noerror |
読み取りエラーが発生しても続行します。 |
fdatasync |
終了前に出力ファイルデータをファイルに書き込みます。 |
fsync |
終了前に出力ファイルデータおよびメタデータをファイルに書き込みます。 |
フラグに関する指定方法
iflag=FLAGS, oflag=FLAGS
に指定できる読み込み、書き込みに関するフラグ以下に示します。
複数指定する場合は、カンマで区切ります。
記号 | 説明 | オプション |
---|---|---|
direct |
データに対して直接 I/O を使用します。 | iflag, oflag |
dsync |
データに対して同期 I/O を使用します。 | iflag, oflag |
sync |
データ、メタデータに対して同期 I/O を使用します。 | iflag, oflag |
nonblock |
非同期 I/O を使用します。 | iflag, oflag |
directory |
ディレクトリでない場合は失敗します。 | iflag, oflag |
append |
追加モード (conv=notrunc 推奨)。 |
oflag |
fullblock |
完全な入力ブロックを蓄積します。 | iflag |
noatime |
アクセス時間を更新しません。 | iflag, oflag |
nocache |
キャッシュの削除を要求します。 | oflag |
noctty |
ファイルから制御端末を割り当てません。 | iflag, oflag |
nofollow |
シンボリックリンクを解決しません。 | iflag, oflag |
count_bytes |
count=N をブロック数ではなく、バイト数として扱います。 |
iflag |
skip_bytes |
skip=N をブロック数ではなく、バイト数として扱います。 |
iflag |
seek_bytes |
seek=N をブロック数ではなく、バイト数として扱います。 |
iflag |
コメント