dd コマンドで進行状況を確認したい
dd といえば、USRシグナルを送れば進捗状況が見えるのですが。
kill -USR1 $pid; sleep 1; kill $pid
これは起動中にddコマンドに対してpidへシグナルを送ることで表示されるのですが。説明するのは大変ですよね。
進捗をコマンド引数で指定する status=progress
status=progress
をつけると、どれくらい進んでいるか閲覧が可能になって便利。
dd if=/dev/zero of=out.img bs=1024 count=$((1024*512)) status=progress
rsync みたいに転送状況を知りたいときはこれを使うと便利。
ddするときは、忘れずにつけておきたい。
実例
次のような感じに、コピーの書き込み速度や、何バイトをddできたかを見ることができます。
takuya@NO NAME$ dd if=/dev/zero of=out.img bs=1024 count=$((1024*512)) status=progress 260588544 bytes (261 MB, 249 MiB) copied, 9 s, 28.7 MB/s
進捗見るならdd rescue が
dd の変わりに dd_rescue を使うと良いのは周知の事実ですが。dd のほうがbs count の細かい数字が指定しやすくていいですよね。
進捗を見る方法まとめ
dd コマンドで状況を確認するには、次の方法があります。
- kill USR1 シグナル
- ddrescue
- dd status=progress
活用事例/ dd を直接使う場合
ddrescue なら、進捗を見れるが、dd は見れない・・・ってときに便利です。
dd で直接指定バイトを取り出すとき、状況が見やすくとても便利です。
sudo dd if=/dev/sda bs=512 skip=2048 count=$(( 408373247-2048)) of=/dev/nvme0n1p4 status=progress
上記のコマンドなら次のように表示される。
takuya@ubuntu:~$ sudo dd if=/dev/sda bs=512 skip=2048 count=$(( 408373247-2048)) of=/dev/nvme0n1p4 status=progress 28953080320 bytes (29 GB, 27 GiB) copied, 265 s, 109 MB/s
残り時間や、進捗のパーセンテージは自分の計算こそ必要です。通常のdd違って、状況を表示するだけでも、速度とコピー済みの実績バイト数がわかるので計算が可能になり、安心感が違います。
2022-05-08
加筆修正。verbose がキーワードになかったので、本文に追加