utte

dd 指定したサイズごとにデータをコピー、変換する

dd if=入力 of=出力 [bs=サイズ] [count=回数]

試してみる

主なオプション

if=ファイル入力ファイル。省略すると標準入力
of=ファイル出力ファイル。省略すると標準出力
bs=サイズ読み書きするブロックの大きさ(k、M、G などの単位が使える)
count=回数bs の大きさのブロックを、この回数だけコピーする
skip=回数入力の先頭から、ブロックをこの数だけ飛ばす
seek=回数出力の先頭から、ブロックをこの数だけ飛ばす
conv=変換変換を指定する(ucase、lcase、notrunc、sync など)
status=progress経過を表示する

解説

書式が特殊

多くのコマンドと違い、dd のオプションは - を付けず、名前=値 の形で書きます。入力は if=(input file)、出力は of=(output file)です。両方を省略すると、標準入力から読んで標準出力へ書きます。

よく使う用途

/dev/zero(0 が無限に出てくる)や /dev/urandom(乱数が出てくる)を入力にして、指定した大きさのファイルを作ります。ファイルを、ディスクの装置にそのまま書き込んだり、ディスクのイメージを作ったりするのにも使われます。ブートセクタ(先頭の512バイト)のバックアップなどの用途もあります。

サイズの計算

コピーするデータの大きさは、bs × count です。bs=1M count=2 は 2MB です。単位は、1k は 1024 バイトで、1kB は 1000 バイトという違いがあります。

危険性

of= に装置のファイル(/dev/sda など)を指定すると、そのディスクの内容が上書きされ、元に戻せません。if と of の指定を間違えないよう、実行前によく確認しましょう。

経過の表示

dd は終了時に、コピーした量と速度を標準エラー出力に表示します。status=progress で途中経過を、status=none で表示なしにできます。

関連するコマンド

LinuC 101の出題範囲