동시에 2개의 SD 카드에 쓰기

동시에 2개의 SD 카드에 쓰기

나는하고 싶다이미지를 쓰다동시에 두 개의 SD 카드에. 나는 적어도 두 가지 동시 쓰기 시나리오를 구상합니다.

  1. tee또는 유사한 분기 메커니즘을 사용하여 이미지를 작성할 수 있습니까 ?
  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

티 또는 유사한 분기 메커니즘을 사용하여 이미지를 쓰는 것이 가능합니까?

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

답변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'

파일을 두 번 읽고 싶지 않기 때문입니까?

( 를 사용하면 &&첫 번째 명령이 성공한 경우에만 두 번째 명령이 실행됩니다. 어쨌든 두 번째 명령을 실행하려면 &&for a 를 변경할 수 있습니다 ;)


파일 시스템에서 파일을 한 번만 읽으려면 다음을 수행하면 됩니다.

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

tee여기서는 기본 동작을 활용하고 있습니다 . tee파일로 보내는 것, 장치 대상 중 하나로 보내는 것, 해당 장치를 명령의 파일 인수로 제공하는 것 tee, 그리고 장치 tee대상으로 보내는 것표준 출력, 다른 장치 대상으로 리디렉션합니다.


또는 이미지를 두 번 읽지만둘 다 동시에 쓴다, 안에평행한, 와 함께 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

관련 정보