DD(1) | FreeBSD General Commands Manual | DD(1) |
名称
dd — ファイルを変換し、コピーする書式
dd | [ operands ...] |
解説
dd ユーティリティは、標準入力を標準出力にコピーします。入力データは、512 バイトのブロックで読み込み書き込みされます。入力の読み込みが短いなら、複数の読み込みからの入力は、出力ブロックを形成するために集められます。終了するとき、 dd は、完了した数、部分的な入力と出力ブロックと切り詰められた入力レコードを標準エラーに表示します。次のオペランドが利用可能です:
- bs= n
- ibs と obs オペランドに優先して、入力と出力の両方のブロックサイズを n バイトに設定します。 noerror, notrunc または sync 以外の変換指定がない場合は、入力ブロック数が小さい場合のまとめ処理なしで入力ブロックを出力ブロックに 1 ブロック単位でコピーします。
- cbs= n
- 変換レコードサイズを n バイトにします。レコード指向の変換が指定された場合には、変換レコードサイズが必要です。
- count= n
- 入力のうち n 個のブロックだけをコピーします。
- files= n
- n 個の入力ファイルをコピーします。このオペランドは、入力デバイスがテープのときだけ有効です。
- fillchar= c
- 変換モードにおいてブロックの空きを詰めるとき、もしくは sync モードで noerror を使用するとき、空白や ヌル 文字を使わずに、指定した ASCII 文字を使用して詰めます。
- ibs= n
- 入力ブロックのサイズを、デフォルトの 512 バイトに代えて n バイトにします。
- if= file
- 標準入力のかわりに file から入力を行います。
- iseek= n
- 入力ファイルの n ブロック目にシークします。 skip= n と同じです。
- obs= n
- 出力ブロックのサイズをデフォルトの 512 バイトに代えて n バイトにします。
- of= file
- 標準出力のかわりに file に対し出力を行います。 notrunc が指定されないかぎり、普通の出力ファイルでは、最後の 1 ブロックサイズに満たないデータは、切り詰められます。出力ファイルの最初の部分がシークされて通り過ぎる場合は、 ( oseek オペランド参照) 出力ファイルは、そこまで切り詰められます。
- oseek= n
- 出力ファイルの n ブロック目にシークします。 seek= n と同じです。
- seek= n
- コピーする前に、出力側ファイルの開始位置を先頭から n ブロックだけ進めます。出力がテープデバイスでない場合は、 lseek(2) システムコールを使ってシークが実行されます。テープデバイスの場合は、既存のブロックを読み捨てる事で指定位置まで進める処理を実行します。もしユーザがテープデバイスに対し読み込みのアクセス権を持っていないときは、テープデバイスに対する ioctl(2) システムコールを使います。シーク処理がファイルの最後を超えて行われる場合は、ファイルの末尾から指定のシーク位置に相当する部分まで ヌル バイトのブロックを挿入します。
- skip= n
- コピーする前に、入力側ファイルの開始位置を先頭から n ブロックだけ進めます。入力がシーク機能を持っているなら、 lseek(2) システムコールが使用されます。シーク機能がなければ、既存のブロックを読み捨てる事で指定位置まで進める処理を実行します。入力がパイプから渡される場合は、正確に指定されたバイト数が読まれます。それ以外のデバイスでは、読まれたブロックのサイズが指定のブロックサイズに満たない物や完全な物の区別をせずに、正確に指定されたブロック数が読まれます。
- conv= value[ , value ...]
-
value に以下のリストから 1 つのシンボルを指定して変換を行います。
- ascii, oldascii
- レコードの変換を行う前に EBCDIC から ASCII への文字コード変換を行います。そのほかは、 unblock と同じです (これらの指定では、 cbs も指定されている場合は、暗黙の内に unblock も指定された事になります)。 ASCII 用に 2 つの変換マップがあります。 ascii は、 AT&T System V UNIX 互換のお奨め変換マップです。 oldascii は、昔の AT&T UNIX および 4.3BSD-Reno 以前のシステムで使われていた変換マップです。
- block
- 入出力のブロック境界に関係なく、入力を改行文字もしくは end-of-file 文字で区切られる可変長レコード列として扱います。末尾の改行文字は、捨てられます。各入力レコードは、 cbs で指定する長さの固定長レコードに変換されます。変換レコードサイズより短い入力レコードは、空白文字が詰められます。変換レコードサイズより長い入力レコードは、長い部分が切り捨てられます。切り捨てがあった場合、切り捨てられた入力レコードの数は、コピーの終了時に標準エラー出力に表示されます。
- ebcdic, ibm, oldebcdic, oldibm
- レコードが変換された後で ASCII から EBCDIC への変換を行う以外は、 block と同じです (これらの指定では、 cbs も指定されている場合は、暗黙の内に block も指定された事になります)。 EBCDIC 用に 4 つの変換マップがあります。 ebcdic は、 AT&T System V UNIX 互換で、推奨変換マップです。 ibm は、微妙に違う変換マップで、 AT&T System V UNIX で変換に ibm を指定した場合に相当します。 oldebcdic と oldibm は、昔の AT&T UNIX および 4.3BSD-Reno 以前のシステムで使われていた変換マップです。
- lcase
- 英大文字を小文字に変換します。
- pareven, parnone, parodd, parset
- 指定したパリティを持つデータを出力します。 EBCDIC から ASCII への変換指定を指定しない限り、入力のパリティビットは、削除されます。
- noerror
- 入力にエラーがあっても処理を止めないようにします。入力エラーが起こったときは、診断メッセージに続けて、その時の入力と出力のブロック数を、正常動作終了時に表示するメッセージと同じフォーマットで標準エラー出力に表示します。 sync 変換も指定されていた場合は、入力データのうち失われたものを NUL バイト (ブロック指向の変換のときは、空白文字) に置き換えて、通常の入力バッファとして処理します。 fillchar オプションを指定した場合、自動的に選択される詰め文字の代わりに、コマンド行で指定した詰め文字を使用します。 sync 変換が指定されていなければ、その入力ブロックは、出力から削除されます。入力ファイルがテープかパイプ以外の場合、 lseek(2) を使い、ファイルオフセットをエラーが発生したブロックの次に設定します。
- notrunc
- 出力ファイルを切り詰めません。これにより、出力ファイルのブロックのうち、 dd が明示的に書き込まないものが保存されます。 notrunc は、テープでは、サポートされません。
- osync
- 最後の出力ブロックを、出力ブロックサイズいっぱいになるようにパディングします。もし変換後に入力ファイルが出力ブロックサイズの整数倍でなかった場合に、最後の出力ブロックのサイズが直前のブロックと同じになるようにします。これは、書き込む際に一定サイズのブロックが必要なデバイスに対して使用するためです。このオプションは、 bs= n によるブロックサイズ指定とは両立しません。
- sparse
- 一つ以上の出力ブロックが NUL バイトのみからなる場合、 NUL で埋める代りに、必要な空間だけ出力ファイルのシークを試みます。結果として、疎なファイルとなります。
- swab
- 入力データを 2 バイトごとのペアとみなし、入れ替えます。入力が奇数バイトだった場合、最終バイトは、そのままになります。
- sync
- 各入力ブロックを入力バッファサイズになるようにパディングします。パディングには、ブロック指向の変換の場合は、空白文字を、そうでなければ NUL バイトを使います。
- ucase
- 英小文字を大文字に変換します。
- unblock
- 入出力のブロック境界に関係なく、入力を固定長レコード列として扱います。入力レコードの長さは、 cbs オペランドで指定します。データの後ろの空白文字を除去して、改行文字を追加します。
サイズの指定の際には、バイト単位で 10 進数、8 進数、16 進数を想定しています。数字の最後に“ b
”, “ k
”, “ m
”, “ g
”, “ w
”をつけた場合、その数字に、 512, 1024 (1K), 1048576 (1M), 1073741824 (1G), integer (整数) に収まるバイト数が、それぞれ乗ぜられます。 2 つ以上の数字を“ x
”でつないだものを積の意味で使用できます。
終了時に、 dd は、きちんともしくは部分的に入出力を行ったブロックの数、切り詰められた入力レコードの数、奇数長のバイト入れ換えを行ったブロックの数を標準エラー出力に表示します。部分的入力ブロックとは、入力ブロックサイズより少なく読まれたものです。部分出力ブロックとは、出力ブロックサイズより少なく書かれたものです。テープデバイスで部分出力ブロックが出た場合は、致命的なエラーとみなされます。それ以外の場合は、そのブロックの残りが書かれます。キャラクタデバイスで部分出力ブロックが出た場合は、警告メッセージが出ます。切り詰められた入力ブロックとは、可変長レコード指向の変換が指定され入力行が変換レコードに合わせるには、長すぎるか newline で終っていない場合のものです。
通常、入力または変換、もしくは両方の結果のデータは、指定されたサイズの出力ブロックに集められます。入力データが最後に達した場合、残っている出力データは、ブロックとして出力されます。これは、最後の出力ブロックのサイズは、出力ブロックサイズより短くなる可能性がある事を意味します。
dd が SIGINFO ( stty(1) の引数 status 参照) シグナルを受けた場合、通常の処理完了時と同じフォーマットで、その時点の入出力ブロック数を標準エラー出力に出力します。 dd が SIGINT シグナルを受けた場合、通常の処理完了時と同じフォーマットで、その時点の入出力ブロック数を標準エラー出力に出力して dd は、終了します。
終了ステータス
The dd utility exits 0 on success, and >0 if an error occurs.使用例
ディスクドライブにバッドブロックが含まれていないことをチェックする。
dd if=/dev/ada0 of=/dev/null bs=1m
現在のところリカバー可能なリードエラーのエラー度合が進んでリカバー不可能になってしまわないように、ディスクドライブをリフレッシュする。
dd if=/dev/ada0 of=/dev/ada0 bs=1m
ファイルからパリティビットを削除する。
dd if=file conv=parnone of=file.txt
ファイルの (偶数) パリティエラーをチェックする。
dd if=file conv=pareven | cmp -x - file
データ CD-ROM ディスクのために共通に使用された形式である Mode-1 CD-ROM のイメージを作成するには、2048 バイトのブロックサイズを使用します:
dd if=/dev/acd0 of=filename.iso bs=2048
規格
dd ユーティリティは、 IEEE Std 1003.2 (“POSIX.2”) 規格のスーパセットであるはずです。 files オペランドと、 ascii, ebcdic, ibm, oldascii, oldebcdic と oldibm は、 POSIX 規格に対する拡張です。バグ
geom(4) サブシステムの保護機構は、ディスクにブロックを書き込むことからスーパユーザを防ぎます。この保護機構を一時的に無効にする方法は、 geom(4) マニュアルページで見つけることができます。一時的に、これらの保護機構を無効にするための指示は、 geom(4) マニュアルページで見つけることができます。October 1, 2013 | FreeBSD |