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

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

私の考えではイメージを書く両方の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'
    

両方のターゲットが異なる速度で書き込むことができる場合は、より遅いライターに過負荷がかからないように書き込み速度を下げる必要があるという問題があると予想されます。画像が大きいです。複数のターゲットを焼くことができることはかなりの利点です。

答え1

Tシャツや同様の分岐メカニズムを使って画像を書くことは可能ですか?

sudo tee /dev/sdb /dev/mmcblk0 < sdcard.image > /dev/null

答え2

2つの異なるBASHシェルでcatコマンドを実行できますか?

どんなcat命令ですか?


ここと同じ結果が必要な場合:

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

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

しかし、単にEnterキーを押したときにこのようなコマンドを組み合わせてはいけませんか? :

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

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

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


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

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

teeここでは基本的な動作を活用します。teeコンテンツをファイルに送信し、デバイスターゲットの1つに送信し、そのデバイスをコマンドのファイル引数として渡し、teeコンテンツteeを次に送信します。標準出力、他のデバイスターゲットにリダイレクトします。


または、画像を2回読んでください。2つを同時に書く、存在する平行線、そしてparallel

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

parallel注: これはGNU parallelではないことを覚えなさい。moreutils parallel

答え3

これは同時複製のための最小シェルスクリプトです。エラーがあると、STDERRにエラーが発生します。

#!/bin/sh
echo "Image file ${1}"
echo "1st SD Card Path ${2}"
echo "2nd SD Card Path ${3}"

dd if=${1} of=${2}&
dd if=${1} of=${3}

使用法sh script.sh image_file first_card_path second_card_path

関連情報