Como clonar um disco inteiro em um disco maior e depois descarregar?

3

O título pode ser um pouco confuso, então em detalhes: O que eu fiz foi clonar um pequeno módulo flash de 32GB que tinha três partições. Por acaso eu tinha um USB de 32GB por aí, então achei que poderia funcionar; isso não aconteceu. Parece que 32GB da Toshiba é um pouco diferente de 32GB da Sandisk.

Enfim, então levei para uma unidade externa de 2TB e fiz exatamente a mesma coisa. Especificamente, fiz o seguinte:

dd if=/dev/sdX of=/dev/sdY bs=100M

aside O bloco final aparece como uma cópia parcial ou é descartado se o EOF for alcançado primeiro?

De modo a essencialmente clonar todo o módulo flash - tabela de partição e tudo. Os 32GB - > 2TB foi bastante fácil, pois o utilitário dd foi interrompido corretamente após a leitura até o final da (terceira) partição final.

Então, o que eu quero fazer agora é criar um blob binário simples contendo toda a imagem flash. Minha unidade de 2 TB agora é identicamente particionada em relação à unidade original: sdx1, sdx2, sdx3 . Então, mais uma vez eu levei para dd com o seguinte:

dd if=/dev/sdx of=firmware.bin bs=100M

Fazer isso não apenas copiará os primeiros 32GB nos quais estou interessado, mas também continuará e clonará a unidade inteira de 2TB, ou assim foi quando eu tentei. Eu posso encontrar o tamanho exato dos bytes das partições de interesse pelo seguinte:

$ lsblk -b
NAME                         MAJ:MIN RM          SIZE RO TYPE  MOUNTPOINT
sdc                            8:32   0 2000398933504  0 disk  
├─sdc1                         8:33   0     134217728  0 part  
├─sdc2                         8:34   0    2147483648  0 part  
└─sdc3                         8:35   0   29734297600  0 part  

Uma maneira definitiva de resolver isso seria definir o tamanho de blocos de dd para um byte e, em seguida, definir o número de blocos como a soma dos três tamanhos acima:

dd if=/dev/sdc of=firmware.bin bs=1 count=32015998976

Mas não consigo imaginar quanto tempo isso realmente levaria.

EDIT : Um teste rápido de curiosidade dos itens acima mostrou uma taxa de transferência sólida de ~ 150KB / s.

tl; dr Como posso copiar as três primeiras partições de um disco que é muito maior do que a soma dos tamanhos das partições?

    
por sherrellbc 18.03.2016 / 17:33

1 resposta

2

Copie as partições que você precisa e o MBR, se precisar também.

O MBR é armazenado nos primeiros 512 bytes do disco.

dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1

Copiar cada partição

dd if=/dev/sdX1 of=/path/to/partition1.img bs=512

dd if=/dev/sdX2 of=/path/to/partition2.img bs=512

dd if=/dev/sdX3 of=/path/to/partition3.img bs=512
    
por 18.03.2016 / 21:29