dd コマンド
目的
ファイルを変換してコピーします。
構文
dd [ bs=BlockSize ][cbs=BlockSize ]
[conv= [ ascii |block|ebcdic | ibm | unblock ]
InputBlocks ] [ files=InputFiles ] [fskip=
SkipEOFs ] [ ibs=InputBlockSize ] [if=
InFile ] [ obs=OutputBlockSize ] [of=
OutFile ] [ seek=RecordNumber ] [skip=
SkipInputBlocks ][ span=yes|no ]
dd [ Option=Value ]
説明
サイズを指定する場合は、バイト数で指定します。 最後に w、b、または k が付いている数字は、それぞれ、2 倍、512 倍、 または 1024 倍することを示します。x または * (アスタリスク) で区切った数字の対は積を表します。 カウント・パラメーターは、バイト数ではなく 、 コピーするブロックの数を要求します。
conv=ascii フラグ および、conv=ebcdic フラグと関連付けられている、 文字セットのマッピングは、相補演算です。この 2 つのフラグは、ASCII 文字と、 ほとんどのワークステーションとキー・パンチに使われる EBCDIC 文字のサブセットとをマップします。
block、unblock、 ascii、ebcdic、 または ibm のいずれかの変換を指定する場合は、 cbs パラメーター値を使用してください。unblock パラメーターまたは ascii パラメーターを指定すると、 dd コマンドにより固定長から可変長への変換が実行されます。 それ以外の場合は、可変長から固定長への変換が実行されます。cbs パラメーターは固定長を決定します。
処理の終了時に、dd コマンドは全体および部分的な入力ブロックと出力ブロックの数を報告します。
- 通常、必要なのは、出力ファイルへの書き込みアクセスだけです。 しかし、出力ファイルが 直接アクセス・デバイス上になく、seek フラグを使用する場合には、 そのファイルへの読み取りアクセスも必要です。
- dd コマンドは、 conv=ascii または conv=unblock フラグを設定した変換時にのみ 改行文字を挿入し、conv=ebcdic、 conv=ibm、または conv=block フラグを設定した変換時にのみ 埋め込みを行います。
- ファイルをテープにコピーできる場合は、 dd コマンドではなく、 できるだけ backup、 tar、 または cpio コマンドを使用してください。これらのコマンドは、テープ・デバイスで使用するようになっています。テープ・デバイスの使用法の詳細については、rmt スペシャル・ファイルを参照してください。
- bs、 ibs、および obs フラグで指定されるブロック・サイズの値は、 必ず、使用されるメディアの物理ブロックのサイズの倍数でなければなりません。
- conv=sync フラグを指定すると、 dd コマンドによって部分入力ブロックに NULL が埋め込まれます。したがって、 いずれかの読み取りで (ibs フラグで指定された) データのフル・ブロックを受信しない場合、 dd コマンドはデータ・ストリームの途中に NULL を挿入します。 パイプからの読み取りの場合、この挿入はよく発生します。
- bs フラグのみを指定して、 sync、noerror、 または notrunc 以外の変換を指定しない場合、 各入力ブロックからのデータは、個別の出力ブロックとして書き込まれます。 読み取りでフル・ブロックに満たないブロックが戻されて、 sync が指定されていない場合、 結果として出力ブロックのサイズは入力ブロックと同じになります。bs フラグを指定しない場合、または sync、noerror、 notrunc 以外の変換を指定した場合は、入力の終わりに到達するまで、入力が処理され、フルサイズの出力ブロック内に収集されます。
デバイス全体のスパン
InFile と OutFile パラメーターのいずれかが stdin または stdout である場合は、dd によるデバイス全体のスパンは行われません。
出力デバイスがフルの場合には、書き込み時に、dd が次のデバイスにプロンプトを出すような方法でスパンが行われます。 入力デバイスからの読み取り時に、デバイスの読み取りが終了していなくても、 データが入力デバイスから完全に読み取られている場合は、dd が次のデバイスにプロンプトを出します。 この場合、終了するには、'n' を押さなければならないことがあります。
フラグ
項目 | 説明 |
---|---|
bs=BlockSize | ibs フラグおよび、 obs フラグを置き換えて、 入力および出力ブロックのサイズを指定します。bs フラグで指定するブロック・サイズの値は必ず、 使用されるメディアの物理ブロック・サイズの倍数でなければなりません。 |
cbs=BlockSize | conv=block のように、 可変長から固定長への変換、 および固定長から可変長への変換の変換ブロック・サイズを指定します。 |
count=InputBlocks | InputBlocks 変数で指定された入力ブロックの数だけをコピーします。 |
conv= Conversion,.... | 1 つ以上の変換オプションを指定します。複数の変換を指定する場合はコンマで区切ってください。
指定できるオプションを次に示します。
|
files=InputFiles | 入力ファイルの InputFiles 変数の値によって指定されたファイルの数を、 終了前にコピーします (入力が磁気テープ、または類似デバイスである場合にのみ有効です)。 |
fskip=SkipEOFs | コピーを開始する前に、 SkipEOFs 変数によって指定されたファイル終わり文字の数をスキップします。 この SkipEOFs 変数は、マルチファイルの磁気テープ上での位置決めに役立ちます。 |
ibs=InputBlockSize | 入力ブロック・サイズを指定します。デフォルトは 512 バイトまたは 1 ブロックです。 ibs フラグで指定するブロック・サイズの値は、必ず、 使用中のメディアの物理ブロック・サイズの倍数でなければなりません。 |
if=InFile | 入力ファイル名を指定します。標準入力がデフォルト値です。 |
obs=OutputBlockSize | 出力ブロック・サイズを指定します。デフォルトは 512 バイトまたは 1 ブロックです。 obs フラグで指定するブロック・サイズの値は、必ず、 使用中のメディアの物理ブロック・サイズの倍数でなければなりません。 |
of=OutFile | 出力ファイル名を指定します。標準出力がデフォルト値です。 |
seek=RecordNumber | コピー前に、RecordNumber 変数によって指定されたレコードを出力ファイルの最初から探します。 |
skip=SkipInputBlocks | コピーを開始する前に、入力ブロックの指定された SkipInputBlocks 値をスキップします。 |
span=yes|no | yes が指定された場合は複数のデバイス間でのスパンを許可し、no が指定された場合はデフォルトで動作します。詳しくは、『デバイス全体のスパン』を参照してください。 |
終了状況
このコマンドは次の終了値を戻します。
項目 | 説明 |
---|---|
0 | 入力ファイルは正常にコピーされました。 |
>0 | エラーが発生しました。 |
例
- ASCII テキスト・ファイルを EBCDIC に変換するには、次のように入力します。
このコマンドを実行すると、
text.ascii ファイルが EBCDIC 表記に変換され、
その EBCDIC バージョンが text.ebcdic ファイルに保管されます。
注: conv=ebcdic パラメーターを指定すると、dd コマンドは ASCII の ^ (曲折アクセント記号) 文字を EBCDIC の未使用の文字 (16 進数 9A) に変換し、 ASCII の ~ (ティルド) を EBCDIC の ^ (NOT 記号) に変換します。
- 可変長レコードである ASCII ファイル /etc/passwd を、 132 バイトの固定長 EBCDIC レコードのファイルに変換するには、次のように入力します。
- 各レコードが 132 バイトの EBCDIC ファイルを 小文字の可変長 ASCII 行に変換するには、次のように入力します。
- 可変長レコードの ASCII ファイル /etc/passwd を、IBM バージョンの EBCDIC による 132 バイトの 固定長レコードのファイルに変換するには、次のように入力します。
- 1KB ブロックのテープから、2KB のブロックを 使用する別のテープにブロックをコピーするには、 次のように入力します。
- dd コマンドをフィルターとして使用するには、次のように入力します。
ls -l | dd conv=ucaseこのコマンドにより、現行ディレクトリーの長いリストが大文字で表示されます。注: dd コマンドおよび cpio コマンドの 9348 磁気テープ装置モデル 12 に対するパフォーマンスは、 デフォルトのブロック・サイズを変更すると向上します。 ブロック・サイズを変更するには、 chdev コマンドを次のように使用します。
chdev -l Device_name -a block_size=32k
- 36 ブロック (512 バイト/ブロック) を使用して、
3.5 インチで 1.4MB のディスケットへ効率よく転送するには、次のように入力します。
このコマンドは、Filename パラメーターの値を一度に 1 シリンダーずつディスケット・デバイスに書き込みます。 ディスクからの読み取りを行う場合と、ファイル・サイズがディスケット・ブロック・サイズの倍数でない場合は、 conv=sync が必要です。dd コマンドへの入力がファイルではなく、 パイプである場合は、これを行わないでください。 そうすると、ほとんどの入力で、最後のブロックの代わりに NULL が埋め込まれます。
- ブロック・サイズが 720b ブロックに設定されている入力ファイルから、
ブロックを 1.44MB サイズのディスケットにコピーするには、次のように入力します。
dd if=testfile of=/dev/fd0 bs=720b conv=sync注: 入力ファイルが出力デバイスの物理サイズより大きい場合は、dd は、 別のデバイスが必要であるというプロンプトを出します。
- ブロック・サイズが 32k ブロックに設定されている入力ファイルから、
ブロックをテープにコピーするには、次のように入力します。
dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
- ブロック・サイズが 32k ブロックに設定されている現行ディレクトリーのファイルに、
データのブロックをテープからコピーするには、次のように入力します。
dd if=/dev/rmt0 of=outfile bs=32k conv=sync
- ブロック・サイズが 720b ブロックに設定されている入力ファイルから、
ブロックを 1.44MB サイズのディスケットにコピーするには、次のように入力します。
dd if=testfile of=/dev/fd0 bs=720b conv=sync span=yes
注: 入力ファイルが出力デバイスの物理サイズより大きい場合は、dd は 別のデバイスが必要であるというプロンプトを出します。 - ブロック・サイズが 32k ブロックに設定されている入力ファイルから、
ブロックをテープにコピーするには、次のように入力します。
dd if=inputfile of=/dev/rmt0 bs=32k conv=sync span=yes
- ブロック・サイズが 32k に設定されているテープから、
データのブロックを現行ディレクトリー内のファイルにコピーするには、次のように入力します。
dd if=dev/rmt0 of=outfile bs=32k conv=sync span=yes
ファイル
項目 | 説明 |
---|---|
/usr/bin/dd | dd コマンドが入っています。 |