dd コマンド

目的

ファイルを変換してコピーします。

構文

dd[bs=BlockSize][cbs=BlockSize]

[凸 = [ ascii |block|ebcdic | ibm | unblock ]

[lcase | ucase ] [iblock ]

[noerror ] [swab ] [sync ]

[oblock ] [notrunc ]][カウント =

InputBlocks ] [ ファイル入力ファイル ] [fskip=

SkipEOFs ] [ ibs=入力ブロックサイズ ] [もし

InFile ] [ obs=出力ブロックサイズ ] [

OutFile ] [ シークレコード番号 ] [スキップ

SkipInputBlocks ][ span=はい|いいえ ]

dd [ オプション= ]

説明

dd コマンドは、 InFile パラメーターまたは標準入力を読み取って指定された変換を行い、 変換したデータを OutFile パラメーターまたは標準出力にコピーします。 入力および出力ブロック・サイズを指定して、 物理的な未加工の入出力 (ロウ I/O) を使用できます。
注: ブロック という用語は、1 回の操作で dd コマンドによって読み書きされるデータの量を指し、必ずしもディスク・ブロックと同じサイズではありません。

サイズを指定する場合は、バイト数で指定します。 最後に wb、または k が付いている数字は、それぞれ、2 倍、512 倍、 または 1024 倍することを示します。x または * (アスタリスク) で区切った数字の対は積を表します。 カウント・パラメーターは、バイト数ではなく 、 コピーするブロックの数を要求します。

conv=ascii および conv=ebcdic フラグに関連した文字セット・マッピングは、相補的な操作です。 この 2 つのフラグは、ASCII 文字と、 ほとんどのワークステーションとキー・パンチに使われる EBCDIC 文字のサブセットとをマップします。

ブロックunblockasciiebcdic、または ibm 変換のいずれかを指定する場合は、 cbs パラメーター値を使用してください。 unblock パラメーターまたは ascii パラメーターを指定すると、 dd コマンドにより固定長から可変長への変換が実行されます。 それ以外の場合は、可変長から固定長への変換が実行されます。 cbs パラメーターは固定長を決定します。

重要: cbs パラメーター値が最小入力ブロックより小さい値に指定されると、変換されたブロックは切り捨てられます。

処理の終了時に、dd コマンドは全体および部分的な入力ブロックと出力ブロックの数を報告します。

注:
  1. 通常、必要なのは、出力ファイルへの書き込みアクセスだけです。 ただし、出力ファイルが直接アクセス装置上になく、 seek フラグを使用する場合は、ファイルへの読み取りアクセス権も必要です。
  2. dd コマンドは、 conv=ascii または conv=unblock フラグが設定された状態で変換する場合にのみ改行文字を挿入します。 conv=ebcdicconv=ibm、または conv=block フラグが設定された状態で変換する場合にのみ埋め込みます。
  3. 可能な場合はいつでも、 dd コマンドの代わりに backuptar、または cpio コマンドを使用して、ファイルをテープにコピーしてください。 これらのコマンドは、テープ・デバイスで使用するようになっています。 磁気テープ装置の使用について詳しくは、 rmt スペシャル・ファイルを参照してください。
  4. bsibs 、および obs フラグで指定するブロック・サイズ値は、常に、使用するメディアの物理ブロック・サイズの倍数でなければなりません。
  5. conv=sync フラグを指定すると、 dd コマンドは、部分入力ブロックにヌルを埋め込みます。 したがって、 いずれかの読み取りで (ibs フラグで指定された) データのフル・ブロックを受信しない場合、 dd コマンドはデータ・ストリームの途中に NULL を挿入します。 パイプからの読み取りの場合、この挿入はよく発生します。
  6. bs フラグのみを指定して、 syncnoerror、 または notrunc 以外の変換を指定しない場合、 各入力ブロックからのデータは、個別の出力ブロックとして書き込まれます。 読み取りでフル・ブロックに満たないブロックが戻されて、 sync が指定されていない場合、 結果として出力ブロックのサイズは入力ブロックと同じになります。 bs フラグを指定しない場合、または syncnoerrornotrunc 以外の変換を指定した場合は、入力の終わりに到達するまで、入力が処理され、フルサイズの出力ブロック内に収集されます。

デバイス全体のスパン

入力ファイルが出力デバイスの物理サイズより大きい場合は、dd を使用してデバイス全体をスパンすることができます。
注: ブロック・サイズ bs をデバイスの物理サイズの正確な倍数として指定する場合は注意が必要です。不適切なブロック・サイズを指定すると、データの不整合またはオーバーラップが発生するためです。

InFile と OutFile パラメーターのいずれかが stdin または stdout である場合は、dd によるデバイス全体のスパンは行われません。

出力デバイスがフルの場合には、書き込み時に、dd が次のデバイスにプロンプトを出すような方法でスパンが行われます。 入力デバイスからの読み取り時に、デバイスの読み取りが終了していなくても、 データが入力デバイスから完全に読み取られている場合は、dd が次のデバイスにプロンプトを出します。 この場合、終了するには、'n' を押さなければならないことがあります。

フラグ

項目 説明
bs=ブロックサイズ ibs および obs フラグを置き換え、入力ブロック・サイズと出力ブロック・サイズの両方を指定します。 bs フラグで指定するブロック・サイズの値は必ず、 使用されるメディアの物理ブロック・サイズの倍数でなければなりません。
cbs=ブロックサイズ 可変長から固定長への変換、および固定長から可変長への変換 ( conv=blockなど) の変換ブロック・サイズを指定します。
count=入力ブロック InputBlocks 変数で指定された入力ブロックの数だけをコピーします。
conv= 変換,.... 1 つ以上の変換オプションを指定します。 複数の変換を指定する場合はコンマで区切ってください。 指定できるオプションを次に示します。
ASCII
EBCDIC を ASCII に変換します。 このオプションは、 ebcdicibmblock、および unblock オプションとは互換性がありません。
BLOCK
可変長レコードを固定長に変換します。 長さは変換ブロック・サイズ (cbs) によって決定されます。 このオプションは、 asciiebcdicibm、および unblock オプションとは互換性がありません。
EBCDIC
ASCII を標準 EBCDIC に変換します。 このオプションは、 asciiibmblock、および unblock オプションとは互換性がありません。
ibm
ASCIIをIBM®版のEBCDICに変換する。 このオプションは、 asciiebcdicblock、および unblock オプションとは互換性がありません。
iblock oblock
直接アクセス・デバイスでの読み取りエラーまたは書き込みエラーから生じるデータの損失を最小限にとどめます。 イブロック変数を指定し、ブロック読み出し中にエラーが発生した場合(ブロックサ イズが512または'ibs='入力ブロックサイズ変数で指定されたサイズ)、'ddコマ ンドはより小さいサイズ単位でデータブロックの再読み込みを試みる。 dd コマンドが入力デバイスのセクター・サイズを判別できる場合は、 損傷を受けたブロックを一度に 1 セクターずつ読み取ります。 判別できない場合は、一度に 512 バイトずつ読み取ります。 入力ブロック・サイズ (ibs) は、 この再試行のときのサイズの倍数でなければなりません。 このオプションは、読み取りエラーに関連するデータの損失を 1 セクターにおさえます。 oblock 変換も出力に対して同じように機能します。
LCASE
英文字をすべて小文字にします。
NOERROR
エラーの発生時に処理を停止しません。
notrunc
出力ファイルを切り捨てません。 出力への書き出しが明示的でないブロックは保存されます。
UCASE
英文字をすべて大文字にします。
綿棒 (swab)
バイトの対をすべてスワップします。
sync
すべての入力ブロックを ibs 値まで埋め込みます。
非ブロック
固定長ブロックを可変長に変換します。 長さは変換ブロック・サイズ (cbs) によって決定されます。 このオプションは、 asciiebcdicibm、および block オプションと互換性がありません。
files=入力ファイル 入力ファイルの InputFiles 変数の値によって指定されたファイルの数を、 終了前にコピーします (入力が磁気テープ、または類似デバイスである場合にのみ有効です)。
fskip=スキップ コピーを開始する前に、 SkipEOFs 変数によって指定されたファイル終わり文字の数をスキップします。 この SkipEOFs 変数は、マルチファイルの磁気テープ上での位置決めに役立ちます。
ibs=入力ブロックサイズ 入力ブロック・サイズを指定します。デフォルトは 512 バイトまたは 1 ブロックです。 ibs フラグで指定するブロック・サイズの値は、必ず、 使用中のメディアの物理ブロック・サイズの倍数でなければなりません。
もしインファイル 入力ファイル名を指定します。標準入力がデフォルト値です。
obs=出力ブロックサイズ 出力ブロック・サイズを指定します。デフォルトは 512 バイトまたは 1 ブロックです。 obs フラグで指定するブロック・サイズの値は、必ず、 使用中のメディアの物理ブロック・サイズの倍数でなければなりません。
アウトファイル 出力ファイル名を指定します。標準出力がデフォルト値です。
seek=レコード番号 コピー前に、RecordNumber 変数によって指定されたレコードを出力ファイルの最初から探します。
skip=入力ブロックをスキップする コピーを開始する前に、入力ブロックの指定された SkipInputBlocks 値をスキップします。
スパン =yes|no デバイス間のスパンを許可する (指定されている場合)yes指定されている場合はデフォルトとして機能します。no詳しくは、 複数のデバイスにわたるスパンニングを参照してください。

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
0 入力ファイルは正常にコピーされました。
>0 エラーが発生しました。

  1. ASCII テキスト・ファイルを EBCDIC に変換するには、次のように入力します。このコマンドは、text.asciiファイルから EBCDIC への表現、EBCDIC バージョンの保管text.ebcdicを適用します。
    注: conv=ebcdic パラメーターを指定すると、 dd コマンドは ASCII ^ (曲折アクセント記号) 文字を未使用の EBCDIC 文字 (9A 16 進数) に変換し、ASCII ~ (波形記号) を EBCDIC ^ (NOT 記号) に変換します。
  2. 可変長レコードである ASCII ファイル /etc/passwd を、 132 バイトの固定長 EBCDIC レコードのファイルに変換するには、次のように入力します。
  3. 各レコードが 132 バイトの EBCDIC ファイルを 小文字の可変長 ASCII 行に変換するには、次のように入力します。
  4. 可変長レコード ASCII ファイル /etc/passwd を、EBCDIC の IBM バージョンの 132 バイト固定長レコードのファイルに変換するには、次のように入力します。
  5. 1KB ブロックのテープから、2KB のブロックを 使用する別のテープにブロックをコピーするには、 次のように入力します。
  6. dd コマンドをフィルターとして使用するには、次のように入力します。
    ls -l | dd  conv=ucase
    このコマンドにより、現行ディレクトリーの長いリストが大文字で表示されます。
    注: デフォルトのブロック・サイズを変更することにより、9348 磁気テープ装置モデル 12 に対する dd コマンドおよび cpio コマンドのパフォーマンスを向上させることができます。 ブロック・サイズを変更するには、次のように chdev コマンドを使用します。
    chdev -l Device_name -a block_size=32k
  7. 36 ブロック (512 バイト/ブロック) を使用して、 3.5 インチで 1.4MB のディスケットへ効率よく転送するには、次のように入力します。

    このコマンドは、Filename パラメーターの値を一度に 1 シリンダーずつディスケット・デバイスに書き込みます。 このconv=syncディスクから読み取る場合、およびファイル・サイズがディスケット・ブロック・サイズの倍数でない場合に必要です。 dd コマンドへの入力がファイルではなく、 パイプである場合は、これを行わないでください。 そうすると、ほとんどの入力で、最後のブロックの代わりに NULL が埋め込まれます。

  8. ブロック・サイズが 720b ブロックに設定されている入力ファイルから、 ブロックを 1.44MB サイズのディスケットにコピーするには、次のように入力します。
    dd if=testfile of=/dev/fd0 bs=720b conv=sync
    注: 入力ファイルが出力装置の物理サイズより大きい場合、dd は別の装置を求めるプロンプトを出します。
  9. ブロック・サイズが 32k ブロックに設定されている入力ファイルから、 ブロックをテープにコピーするには、次のように入力します。
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
  10. ブロック・サイズが 32k ブロックに設定されている現行ディレクトリーのファイルに、 データのブロックをテープからコピーするには、次のように入力します。
    dd if=/dev/rmt0 of=outfile bs=32k conv=sync
  11. ブロック・サイズが 720b ブロックに設定されている入力ファイルから、 ブロックを 1.44MB サイズのディスケットにコピーするには、次のように入力します。
    dd if=testfile of=/dev/fd0 bs=720b conv=sync span=yes
    注: 入力ファイルが出力装置の物理サイズより大きい場合、 dd は別の装置を入力するようプロンプトを出します。
  12. ブロック・サイズが 32k ブロックに設定されている入力ファイルから、 ブロックをテープにコピーするには、次のように入力します。
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync span=yes
  13. ブロック・サイズが 32k に設定されているテープから、 データのブロックを現行ディレクトリー内のファイルにコピーするには、次のように入力します。
    dd if=dev/rmt0 of=outfile bs=32k conv=sync span=yes

ファイル

項目 説明
/usr/bin/dd dd コマンドが入っています。