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