dd
コマンドは、ファイルやデバイス間でデータをバイト単位でコピー・変換 するためのコマンドです。
ディスクのバックアップやイメージ作成、ブートUSBの作成、ランダムデータの生成などに利用されます。
構文(Syntax)
dd [オペランド]...
※ dd
は通常のコマンドと異なり、オプションではなく key=value
形式で指定します。
主なオペランド一覧
オペランド | 説明 | 使用例 |
---|---|---|
if=FILE | 入力ファイル(input file) | dd if=/dev/zero of=out.img bs=1M count=10 |
of=FILE | 出力ファイル(output file) | dd if=in.img of=/dev/sdb bs=4M status=progress |
bs=SIZE | 入出力のブロックサイズ | bs=1M |
count=N | N ブロック分だけコピー | count=100 |
skip=N | 入力の先頭から N ブロックをスキップ | skip=10 |
seek=N | 出力の先頭から N ブロック分をスキップ | seek=10 |
status=none | 進捗を表示しない | status=none |
status=progress | 進捗を表示 | status=progress |
conv=sync | ブロックサイズに満たない部分を埋める | conv=sync |
conv=noerror | エラーが発生しても処理を継続 | conv=noerror |
conv=ucase / conv=lcase | 大文字化 / 小文字化してコピー | conv=lcase |
実行例
10MB の空ファイルを作成
dd if=/dev/zero of=empty.img bs=1M count=10
ディスク全体をバックアップ
sudo dd if=/dev/sda of=/backup/disk.img bs=4M status=progress
ディスクイメージを USB に書き込み
sudo dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress
ランダムデータでファイルを生成
dd if=/dev/urandom of=random.bin bs=1M count=5
ファイルの一部だけコピー(先頭 1MB をスキップ)
dd if=bigfile.dat of=part.dat bs=1M skip=1 count=10
エラー例(権限不足でデバイスに書き込み)
dd if=ubuntu.iso of=/dev/sdb bs=4M
出力例:
dd: failed to open '/dev/sdb': Permission denied
関連コマンド
cp
: 一般的なファイルコピーcat
: 標準入出力を使ったデータコピーpv
: パイプ経由で進捗表示を行いながらコピーhexdump
/od
: バイナリデータの表示
備考
dd
は 非常に強力かつ危険 なコマンドで、誤ってof=/dev/sda
などを指定するとシステムディスクを破壊します。- 進捗表示は
status=progress
を使うのが便利です(古い環境ではkill -USR1 <pid>
で確認)。 - バックアップやリストア時は 対象デバイスを正しく確認 することが必須です。
bs
(ブロックサイズ)の指定により速度が大きく変わります。
参考
- manページ: man7.org dd(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/
コメント