つまり、dd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync
またはcp archlinux.iso /dev/sdx && sync
、そしてどちらを使うのか? (ddのかなりの進行状況バーを除いて)
違いの1つは効率、つまりスピードです。たとえば、cat
を使用して、バイトを1つずつ取得してデバイスにコピーできます。
cat archlinux.iso > /dev/sdx
理論上、猫はそれぞれbyteを個別に移動します。これは遅いプロセスですが、実際にはバッファーが含まれます。
dd
とgoodブロックサイズ(通常は物理ブロックサイズに関連)を使用すると、より高速になります。
cp
の場合、cp
(ユーザーの制御下ではありません)が使用するバッファーサイズと、途中のその他のバッファーに依存します。理論的には、効率はcat
とdd
の間にあります。
類推:ガラスの内容物を別のガラスに注ぐようなものです。
cat
は一度に1滴ずつ行います。
dd
はスプーンを使用し、スプーンの大きさを定義します(システム制限が適用されます)
cp
は独自のスプーンを使用しますが、その大きさはわかりません。
主にあなたが言及したstatus=progress
のためにそれを使用します。何を言えばいいか、私はせっかちで、する必要があります知っている :-)
これを追加するのを忘れてジョブを開始した場合でも、SIGUSR1シグナルを送信すると、現在のI/O統計がstderrに出力されます(リダイレクトしない限り、これは端末です)。