dd – データを低レベルでコピー・変換するコマンド

移動・コピー
スポンサーリンク

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=NN ブロック分だけコピー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(ブロックサイズ)の指定により速度が大きく変わります。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント