ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

dd_rescueコマンドとddコマンドの違い

先日の投稿ネタで、id:otsuneさんからコメント頂きました。

id:otsune 2007/11/11 21:43
>ddコマンドって、実行すると完了するまで だんまり状態になるんですよね。
いちおうUSR1シグナルを与えると今どこまでコピーしてるのか表示してくれます。
どっちゃにしろdd_rescueのほうがblocksizeを自動調整してくれたりするので便利だけど。

貴重な情報、ありがとうございます〜。って訳で、早速比較検証。VirtualPCKNOPPIX喰わせて、どのような変化が訪れるのか検証してみました。


ところで、VirtualPCKNOPPIX 5.1.1を喰わせると、(そのままでは)マウスが正常動作しません。
解決方法は、以下のURL通りです。


従って、VirtualPCKNOPPIXを動かすには、起動時、以下のように記述します。

$ knoppix noswap i8042.noloop

起動時エラーが幾つか出ますが、マウスは使えます。

dd_rescueの画面表示

ご覧の通り、リアルタイムに動作しているのが判別できます。

KNOPPIX2
KNOPPIX2 posted by (C)wacky

KNOPPIX3
KNOPPIX3 posted by (C)wacky

ddの画面表示

ご覧の通り、完了するまで だんまり状態です。

KNOPPIX4
KNOPPIX4 posted by (C)wacky

ここで、"kill -USR1 プロセスID"を指定すると、その瞬間の状況が見られます。

KNOPPIX6
KNOPPIX6 posted by (C)wacky

時間比較

VirtualPC上で10MBの仮想HDDですが、どのくらいの転送速度がかかるのか、(timeコマンドを使って)ちょっと比較してみました。
(注意:仮想HDD上でのテストなので参考値として下さい)

コマンド real user sys
(1)単純なddコマンド 13.534s 0.324s 6.768s
(2)otsuneさんの改良表記版dd 4.864s 0.188s 1.148s
(3)dd_rescue 1.880s 0.008s 1.024s


コマンドの指定例は、以下の通り。

(1)単純なddコマンド
$ dd if=/dev/hdb of=/dev/hda

(2)otsuneさんの改良表記版dd
$ dd if=/dev/hdb of=/dev/hda ibs=512 obs=1024k conv=sync,noerror

(3)dd_rescue
$ dd_rescue /dev/hdb /dev/hda


表示を頻繁に行うので、(表示無しの)ddコマンドの方が速いんだろうと想像していたんですが、dd_rescueって結構速いんですね。知らなかった。