dd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync
do ie または do の違いは何でありcp archlinux.iso /dev/sdx && sync
、どちらかを使用する理由はありますか? (ddの美しい進行状況バーに加えて)
答え1
違いの1つは効率とスピードです。たとえば、バイトを1つずつインポートしてデバイスにコピーできますcat
。理想的な実装または以前のシステムではたとえば、BSD4:
cat archlinux.iso > /dev/sdx
これらの実装ではcat
、バイト独立した。バッファは実際に関連していますが、これは遅いプロセスです。最新のcat
実装ではチャンクで読みます(下記参照)。
そしてdd
ㅏいいねブロックサイズより速くなります。
これは、バッファサイズ(ユーザが制御できない)と他のバッファがcp
使用するバッファサイズによって異なります。cp
効率は理想的な実装cat
とdd
最適なブロックサイズの間です。
実際には現代的ですが、システムが必要ですcat
。cp
優先ブロックサイズ:st_blkサイズ。必ずしもそうではありません。最適なブロックサイズ。
たとえ話は、一杯の内容物を別のグラスに注ぐのと同じです。
理想化は
cat
一度に一滴ずつ来る。dd
スプーンが使用され、スプーンのサイズを正確に定義します(システム制限)。cp
現代人はcat
自分のスプーンを使います(stat -f -c %s filename
そしてそれがどれだけ大きいかを教えてくれます)。
答え2
私は主にあなたが言及したのでそれを使用しますstatus=progress
。私が言えることは、私は辛抱強く必要があります。知る:-)
追加して作業を開始するのを忘れた場合でも、SIGUSR1シグナルを送信して現在のI / O統計をstderr(リダイレクトしない限り端末)に印刷します。