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'

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

( &&두 번째 명령은 첫 번째 명령이 성공한 경우에만 실행됩니다. 그래도 두 번째 명령을 실행하려면 &&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

관련 정보