제 생각에는이미지를 쓰다두 SD 카드에 동시에 저장됩니다. 나는 적어도 두 가지 동시 쓰기 시나리오를 구상합니다.
tee
유사한 포크 메커니즘을 사용하여 이미지를 쓰는 것이 가능합니까?두 개의 다른 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