web-dev-qa-db-ja.com

2枚のSDカードに同時に書き込む

画像を書く 2枚のSDカードで同時にやりたいです。私は少なくとも2つの同時書き込みシナリオを想定しています。

  1. teeまたは同様の分岐メカニズムを使用してイメージを書き込むことは可能ですか?
  2. 2つの異なるBASHシェルからcatまたはpvコマンドを実行することは可能ですか?

    Sudo sh -c 'pv sdcard.image >/dev/sdb'
    Sudo sh -c 'pv sdcard.image >/dev/mmcblk0'
    
    Sudo sh -c 'cat sdcard.image >/dev/sdb'
    Sudo sh -c 'cat sdcard.image >/dev/mmcblk0'
    

2つのターゲットを異なる速度で書き込むことができる場合は、遅いライターに過負荷をかけないように、書き込み速度を下げる必要があるかもしれないという問題を予見できます。画像が大きい:複数のターゲットを書き込む機能は大きな利点です。

1
gatorback

ティーなどの分岐機構で画像を書き込むことはできますか?

Sudo tee /dev/sdb /dev/mmcblk0 < sdcard.image > /dev/null
4
muru

2つの異なるBASHシェルからcatコマンドを実行することは可能ですか?

どのcatコマンド?


ここと同じ結果を達成したいだけの場合:

Sudo sh -c 'pv sdcard.image >/dev/sdb'

Sudo sh -c 'pv sdcard.image >/dev/mmcblk0'

しかし、1回のEnterヒットで、次のようなコマンドを単純に組み合わせてみませんか?:

Sudo sh -c 'pv sdcard.image /dev/sdb && pv sdcard.image /dev/mmcblk0'

ファイルを2回読みたくないからですか?

&&を使用すると、最初のコマンドが成功した場合にのみ、2番目のコマンドが実行されます。とにかく2番目のコマンドを実行する場合は、&&;に変更できます)


ファイルシステムからファイルを1回だけ読み取るには、次のようにします。

cat sdcard.image | tee /dev/sdb > /dev/mmcblk0

ここでは、teeのデフォルトの動作を利用しています。teeがファイルに送信するもの、デバイスターゲットの1つに送信し、そのデバイスをteeコマンドのファイル引数として指定し、teeが送信するものstdout、他のデバイスターゲットにリダイレクトします。


または、イメージを2回読み取りますが、両方の書き込みを同時にparallelで、parallelを使用して実行します:

parallel 'cat sdcard.image >' ::: /dev/{sdb,mmcblk0}

注:このparallelGNU parallelであり、moreutils parallelではないことに注意してください。

2
matsib.dev