디스크를 복제하고 사용자가 복제할 입력 디스크와 복제할 출력 디스크를 선택할 수 있도록 하는 bash 스크립트를 만들고 있습니다. 거의 다 끝났는데 그냥 전화를 끊었어요. dd는 디스크의 변수 이름을 인식하지 못합니다. srcDisk 및 destDisk가 기존 디스크로 정의되었다고 가정하면(이 변수는 내 스크립트의 다른 곳에서 호출되고 sfdisk 및 fdisk와 같은 유틸리티와 함께 사용됩니다), 다음은 제가 시도한 것입니다.
dd if=/dev/$srcDisk of=/dev/$destDisk
파티션을 지정해야 하는지도 궁금했고, 파티션 개수가 다를 수 있으므로 파티션 번호를 지정하는 반복자 변수(i)를 사용하여 do Until 루프를 시도했습니다. 여전히 작동하지 않습니다.
until [ $i -gt srcPartNum ]
do
dd if=/dev/$srcDisk$i of=/dev/$destDisk$i conv=notrunc & pid=$!
while kill -USR1 $pid; do sleep 1; done
done
이 문제를 해결하는 방법이나 해결 방법을 잘 모르겠습니다.
답변1
첫째, 당신은 dd
매우 느립니다. 대신 이것을 사용하십시오
cat "/dev/$srcDisk" >"/dev/$destDisk"
복사하는 동안 원본 및 대상 디스크를 사용하고 있으면 안 됩니다.
dd
오류 메시지나 기존 스크립트의 다른 결과를 보지 않고는 변수가 인식되지 않는 이유를 알 수 없습니다 . 변수를 인용하지 않은 것 외에는 코드 조각에 구문상 문제가 없습니다. 디스크를 복사하는 동안 변수 값을 에코하거나 set -x
문제가 되는 코드 위에 비트를 추가할 수 있습니다.
그런데 Clonezilla와 같은 스크립트 작성을 고려해 본 적이 있습니까?