Usando nomes de variáveis para arquivos de entrada e saída no dd

0

Estou criando um script bash que me permitirá clonar discos e permitir que o usuário selecione o disco de entrada a ser clonado e o disco de saída a ser clonado. Eu quase terminei, mas eu só tenho um jeito de desligar. dd não reconhece os nomes das variáveis dos discos. Supondo que srcDisk e destDisk sejam definidos como discos existentes (essas variáveis são chamadas em outro lugar no meu script e funcionam com utilitários como sfdisk e fdisk), aqui está o que eu tentei:

    dd if=/dev/$srcDisk of=/dev/$destDisk

Eu também queria saber se eu preciso especificar partições, e como o número de partições pode variar, tentei fazer até loop, com a variável iteradora (i) especificando o número da partição. Isso ainda não funcionou:

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

Não sei como corrigir isso ou quaisquer soluções alternativas.

    
por MattR 16.03.2017 / 01:24

1 resposta

1

Primeiro, seu dd será extremamente lento. Use isto ao invés

cat "/dev/$srcDisk" >"/dev/$destDisk"

Seus discos de origem e de destino não devem estar em uso quando você copiá-los.

Sem ver uma mensagem de erro ou outro resultado do seu script existente, não posso dizer por que dd não está reconhecendo suas variáveis. Além de não citar as variáveis, não há nada sintaticamente errado com o seu snippet. Você poderia talvez repetir os valores das variáveis no ponto em que copiou o disco ou adicionar set -x um pouco acima da parte problemática do código.

Como um aparte, você investigou scripts como o Clonezilla?

    
por 16.03.2017 / 01:36