Como posso imaginar um disco rígido várias vezes simultaneamente?

0

Eu quero criar uma imagem de um disco rígido externo USB (partição ext2) que tenha dados grandes (50 - 70 GB) em um disco IDE / SATA interno primeiro e depois restaure esse arquivo de imagem em vários discos rígidos USB simultaneamente. possível caminho mais rápido.

Existe algum aplicativo ou script já disponível ou alguma sugestão?

O Windows também é bom, eu posso montar essas unidades usando o IFS.

    
por linuxnewbie 10.12.2009 / 10:51

1 resposta

3

Você pode usar tee para gerar vários arquivos e a% de substituição de processo de bash para redirecionar o que iria para um arquivo para dd , que pode gravar diretamente em um dispositivo de bloco.

Para copiar de /dev/sda para criar uma imagem em um arquivo:

dd if=/dev/sda of=./drive.image

E para copiar essa imagem para várias unidades:

cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

Observe que o último item é um pipe e não um redirecionamento, já que o tee também enviará sua entrada para a saída starndard. Você poderia enviar isto para / dev / null se quiser manter todos os redirecionamentos iguais na linha de comando, embora isso seja obviamente um pouco menos eficiente ao executar um processo extra e enviar uma cópia extra de todas as informações para ele através de um pipe apenas para descartá-lo:

cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | dd of=/dev/null

embora o efeito de desempenho provavelmente seja pequeno comparado à operação geral que atua em muitos drives USB.

Você também pode copiar uma unidade diretamente para muitas outras, ignorando o arquivo de imagem, embora ter o arquivo de imagem seja mais eficiente se você quiser fazer mais cópias posteriormente (ou se quiser fazer mais cópias agora do que você pode fazer de uma só vez, devido a ter um número limitado ou portas):

cat /dev/sda | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | dd of=/dev/sde

Você também pode querer substituir cat por pv (você encontrará isso na maioria dos repositórios padrão se você ainda não o tiver instalado, caso contrário você poderá obtê-lo em aqui e compile você mesmo) acima para obter um medidor de progresso exibido enquanto a operação de cópia estiver em andamento, da seguinte forma:

pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | dd of=/dev/null

Uma observação importante: dependendo de como as unidades USB estão conectadas e da velocidade com que podem gravar dados individualmente. Isso é apenas um pouco mais rápido do que copiar para cada unidade individualmente Largura de banda em um barramento USB ou hub é compartilhada entre os dispositivos conectados a ela, então, a menos que você tenha vários controladores USB, será o principal gargalo com várias unidades em funcionamento (a menos que cada unidade esteja lenta na gravação, é claro) , como muitos sticks USB baseados em flash são). Algumas placas-mãe têm efetivamente vários controladores USB, então, mesmo sem um controlador extra, pode ser que nem todas as portas compartilhem o mesmo barramento, mas se você as estiver executando em um hub, elas definitivamente estarão compartilhando mesma largura de banda de E / S.
Dito isto, mesmo que o processo seja pouco ou nada mais rápido em termos de tempo de relógio devido à contenção de barramento, você ainda terá a vantagem de fazê-lo em um único comando (com uma única barra de progresso se usar pv ) .

    
por 10.12.2009 / 13:35