ディスクを複製し、ユーザーが複製する入力ディスクと複製する出力ディスクを選択できるようにする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のようなスクリプトの作成を検討したことがありますか?