Maneira gravável de clonar disco de origem em vários discos de destino?

0

Eu preciso clonar um disco inicializável para vários discos (de tamanhos diferentes) em computadores diferentes e ele precisa ser programável por script, mas não consigo encontrar uma maneira de fazê-lo.

Estou usando o Ubuntu 16.04 em tudo.

Primeiro eu tentei dd , eu corri (com o disco desmontado):

$ dd if=/dev/sda bs=1K count=10000000 status=progress | gzip -c > os.img

Isso é cerca de 10GB, o arquivo compactado é de cerca de 3.8GB, o disco de origem é de 120GB, o disco de destino que estou testando é 16GB, então tenho certeza que vai funcionar em todos os tamanhos, escrevi para disco com:

$ gunzip -c os.img | dd bs=1K of=/dev/sda status=progress

Mas não inicializa, eu recebo:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown block(0,0)

não faço ideia do que isso significa, então eu pesquisei mas não encontrei uma solução. Então eu tentei montar o disco em um sistema operacional ao vivo para ver se pelo menos isso funcionou, mas eu recebo:

$ sudo mount /dev/sda1 /mnt
EXT4-fs (sda1): bad geometry: block count 29306624 exceeds size of device (14653670 blocks)

que não faz sentido para mim. Alguém sabe se eu posso consertar isso ou se há um método melhor para fazer isso? Eu vejo pessoas recomendando o clonezilla, mas não consigo encontrar uma versão com script, parece que só posso usá-lo com "terminal GUI".

    
por Fyde 03.07.2018 / 14:24

1 resposta

0

O problema é que o tamanho do disco de origem é maior que (alguns dos) discos de destino. O que significa que a tabela de partições não funciona, porque é feita para um disco de tamanho diferente.

Em seu lugar, eu escreveria um script que usasse fdisk etc. para primeiro excluir todas as partições do disco, depois faria uma partição de tamanho fixo (que deveria ser idêntica ao tamanho da partição onde sua imagem vem, você pode ter que criar tal partição) e, em seguida, torna inicializável. Isso garantirá que a tabela de partição esteja correta para um disco desse tamanho. Por fim, copie a partição (por exemplo, / dev / sda1) em vez de todo o disco.

BTW, usando ambos gzip / gunzip e dd não faz sentido (a menos que você goste da exibição de progresso) - tudo que o dd faz é garantir que as gravações tenham algum tamanho particular. Você poderia apenas usar

gzip -c /dev/sda1 > os.img
gunzip -c os.img > /dev/sdb1

E se você quiser exibir o progresso, também há pv .

    
por 04.07.2018 / 08:25

Tags