だからここで何が起こっているのです。
私はLinuxのライブUSBを通して私のサーバーのドライブのバックアップを始めました。最初のドライブをdd
コマンドのVanillaでコピーし始めました。ちょうどSudo dd if=/dev/sda of=/dev/sdc1
と私はそれが終わるまでコンソールを空白のままにすることを思い出しました。
とにかく同じドライブに別のバックアップを取る必要があったので、Sudo dd if=/dev/sdb of=/dev/sdc3 status=progress
から始めて、現在の転送速度とバイト単位の進行状況を示すテキスト行を得ました。
1.8TBからバックアップされるバイト数を計算する代わりに、バックアップの割合を表示する方法を望んでいました。 status = progressよりも簡単な方法はありますか?
この質問からの回答を見る [ 1 ]
pv
たとえば、開始する前にpv
を使用できます
Sudo apt-get install pv # if you do not have it
pv < /dev/sda > /dev/sc3 # it is reported to be faster
pv /dev/sda > /dev/sc3 # it seems to have the same speed of the previous one
#or
Sudo dd if=/dev/sda | pv -s 1844G | dd of=/dev/sdc3 # Maybe slower
出力 [ 2 ]:
440MB 0:00:38 [11.6MB/s] [======> ] 21% ETA 0:02:19
注:
特に大きなファイルの場合はman dd
を見て、ハードウェア上のすべてをスピードアップするのに必要なオプションを設定したいかもしれません。バッファを設定するためのbs=100M
、書き込まれた有効バイト数をカウントするためのoflag=sync
、あるいはdirect
...
オプション-s
は整数パラメータしか取ることができないので1.8T-->1844G
。
最初の行からわかるように、dd
はまったく必要ありません。
kill -USR1 pid
PIDを個別化したら、既にdd
コマンドを起動している場合は、Ctrl - Z + bg
そしてあなたがそれを読むか、pgrep ^dd
...)あなたはシグナルUSR1
(あるいはSIGUSR1
、あるいはSIGINFO
)を送ってその出力を読むことができます。
プログラムのPIDが1234の場合、
kill -USR1 1234
dd
は、そのSTDERRの端末で次のようなもので答えます。
4+1 records in
4+0 records out
41943040 bytes (42 MB) copied, 2.90588 s, 14.4 MB/s
警告:OpenBSDではkill
の振る舞いを事前にチェックしなければならないかもしれません。[]:代わりに使うkill -SIGINFO 1234
。SIGINFO
という名前のシグニチャが存在します。この場合、SIGUSR1
はプログラム(dd
)を終了する必要があります...
Ubuntuでは-SIGUSR1
(10
)を使用してください。
この種のもののための私の行くツールは progress
です。
このツールは、coreutilsの基本コマンド(cp、mv、dd、tar、gzip/gunzip)を検索するTiny、Dirty、LinuxおよびOSXのみのCコマンドとして記述できます。システムで現在実行中で、コピーされたデータのパーセンテージを表示します。また、推定時間とスループットを表示することができ、「トップライク」モード(監視)を提供します。
これは単に
/proc
をスキャンして興味深いコマンドを探し、次にディレクトリfd
およびfdinfo
を調べて開いているファイルを探し、位置を探し、最も大きいファイルの状況を報告します。非常に軽量で、ほとんどすべてのコマンドと互換性があります。
私はそれが特に便利だと思います:
pv
やdcfldd
と比較して、操作を開始するときに別のコマンドを実行することを忘れないでください。事実の後に監視することができます。kill -USR1
と比べると、ほぼすべてのコマンドで動作します。誤ってコピーを殺していないことを確認するために、常にマンページを再確認する必要はありません。また、パラメータなしで起動すると、現在実行されている一般的な「データ転送」コマンドの進行状況が表示されるので便利です。PIDを調べる必要すらありません。pv -d
と比べると、やはりPIDを調べる必要はありません。dd
を実行してから、別のシェルで次のコマンドを呼び出します。
pv -d $(pidof dd) # root may be required
これにより、pvはdd
プロセスの開かれているすべてのファイル記述子に関する統計を取得します。読み書き用のバッファがどこにあるかがわかります。
dd
に代わるものがあります:dcfldd
。
dcflddは、フォレンジックとセキュリティに役立つ機能を備えたGNU ddの拡張バージョンです。
ステータス出力 - dcflddは、転送されたデータ量と操作にかかる時間の長さに関して、ユーザーの進捗状況を更新できます。
dcfldd if=/dev/zero of=out bs=2G count=1 # test file
dcfldd if=out of=out2 sizeprobe=if
[80% of 2047Mb] 52736 blocks (1648Mb) written. 00:00:01 remaining.
http://dcfldd.sourceforge.net/
https://linux.die.net/man/1/dcfldd
パーセンテージとして、あなたはいくつかの数学をしなければならないでしょう、しかしあなたはすでに開始した後でさえ、kill -USR1 $(pidof dd)
をすることによって、人間が読める形式でddの進歩を得ることができます
現在のddプロセスは次のように表示されます。
11117279バイト(11 MB、11 MiB)コピー、13.715秒、811 kB /秒