はじめに
ストレージのバックアップ、ディスク複製、検証用ダミーデータの生成など、Linux環境における低レイヤデータ操作で重宝される定番ツールがddコマンドです。本稿では、日常的な運用保守で役立つ主要パラメータ(bs、count、status=progress、conv、oflagなど)を取り上げ、Ubuntu端末上でのハンズオン形式を通じてその挙動と実践的な活用法を分かりやすく解説します。
1. 基本操作とブロック制御:入力・出力指定とサイズ設計
安全に検証作業を進められるよう、まずは作業用の一時ディレクトリを準備してカレントパスを切り替えます。そのために対象パスを新規作成して移動するmkdir -p /tmp/dd_demo && cd /tmp/dd_demoコマンドを実行します。

ddは、ファイルやストレージブロックをバイナリレベルで読み出し、任意の単位で変換・転送するコマンドラインツールです。
今回は/dev/zeroをソースとして、1MBのブロックを10回書き出すことで、正確に10MBの固定サイズを持つテストファイルsample_10m.imgを生成してみましょう。
⚙️ [押さえておくべき主要引数]
if=FILE : 読み込み元となる入力元ファイルやストレージデバイスパスを指定of=FILE : 書き込み先となる出力ファイルまたはブロックデバイスパスを指定bs=BYTES : 1回あたりの読み書き単位(ブロックサイズ)をバイトまたは単位付きで定義count=N : 転送対象となる入力ブロックの総数を指定status=LEVEL : 実行中の進捗表示や終了時の統計サマリの出力挙動を制御(例: progress)conv=CONVS : 転送パイプライン内で適用する文字コード変換やデータ同期規則を指定(例: sync, fdatasync)

生成されたテストイメージが意図した通り10MBのファイルサイズで正しく作成されているか検証するため、ls -lh sample_10m.imgコマンドを実行してファイル詳細を確認します。

2. 長時間ジョブを可視化する進捗モニタリング:status=progress
先ほどセットアップした検証環境で作業を続行するため、cd /tmp/dd_demoコマンドを実行してディレクトリへ移動します。

ギガバイト規模のバックアップやディスク複製では、処理がどこまで進んだか把握できないと不安になります。そこでstatus=progressを指定し、転送バイト数や現在の書き込みレートをリアルタイム表示させながら、100MBのダミーイメージsample_100m.imgを作成します。
画面上に出力情報が逐次更新されるため、大容量データのコピーやイメージ作成時にも作業の見通しが立ちやすくなります。

作成完了後、指定通り100MBのデータが正常に出力されたか確かめるため、ls -lh sample_100m.imgコマンドを実行してファイルサイズをチェックします。

3. convオプションによるデータ変換と柔軟な転送制御
引き続き変換処理のテストを行うため、作業パスであるcd /tmp/dd_demoコマンドを実行します。

テキストストリームの変換検証に用いるサンプルとして、小文字英字を含むテスト用テキストinput.txtを準備するため、echo 'hello linux ubuntu dd command tutorial' > input.txtコマンドを実行します。

ddコマンドのconv=ucaseパラメータを活用すると、ストリーム内の小文字アルファベットを一括で大文字へと変換しつつ、ターゲット先であるoutput_upper.txtへ書き出すことができます。
併せてstatus=noneを指定することで、標準エラーに出力される実行統計情報を抑制し、必要な処理結果ファイルのみを静かに生成させます。

変換後のファイル内容がすべて大文字に置き換わっているか検証するため、cat output_upper.txtコマンドを実行して中身を出力します。

4. ディスクI/O書き込み性能測定:oflag=directオプションと環境のクリーンアップ
ストレージI/Oベンチマークを実施するため、検証用パスであるcd /tmp/dd_demoコマンドを実行します。

OSのページキャッシュ機構を迂回し、物理ディスクへ直接ブロックを書き込むため、ddコマンドにoflag=directを指定して50MBの書き込みテストを実行します。
さらにstatus=progressを組み合わせることで、メモリキャッシュの恩恵を排除した、ストレージ本来の純粋なシーケンシャルライト性能をリアルタイムに計測・評価できます。

一連の検証ステップがすべて完了したら、テストで使用した一時ディレクトリと生成データ群をまとめて削除するため、rm -rf /tmp/dd_demoコマンドを実行してシステム環境をクリーンな状態へ戻します。

本記事では、Ubuntu環境におけるddコマンドの基礎的なパラメータ設定から、実践的な進捗監視、データ変換、Direct I/Oによるストレージ測定までを一通り解説しました。ddは非常に強力かつ直接的な権限を持つコマンドです。特に書き込み先(of)の指定ミスはデータ消失につながるため、ターゲットパスを慎重に確認した上で安全に使いこなしてください。