¿Cómo clonar un disco completo en un disco más grande y luego downloadlo?

El título podría ser un poco confuso, por lo que en detalle: lo que he hecho es clonar un pequeño module flash de 32 GB que tenía tres particiones. Tenía un USB de 32 GB por ahí, así que pensé que podría funcionar; no lo hizo. Parece que 32 GB de Toshiba es un poco diferente de 32 GB de Sandisk.

De todos modos, entonces tomé una unidad externa de 2TB e hice exactamente lo mismo. Específicamente, hice lo siguiente:

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

a un lado ¿El bloque final aparece como una copy parcial o se descarta si se llega primero a EOF?

Para esencialmente clonar todo el module flash – tabla de partición y todo. El 32GB -> 2TB fue bastante fácil ya que la utilidad dd se detuvo correctamente después de leer hasta el final de la última (tercera) partición.

Entonces, lo que quiero hacer ahora es simplemente crear un simple blob binary que contenga toda la image flash. Mi disco de 2TB ahora está particionado de manera idéntica con respecto a la unidad original: sdx1, sdx2, sdx3 . Así que, una vez más, acabo de llevar a dd con lo siguiente:

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

Hacerlo no solo copyrá los primeros 32 GB que me interesen, sino que también continuará y clonará todo el disco de 2TB, o lo hizo cuando lo probé. Puedo encontrar la longitud exacta del byte de las particiones de interés por lo siguiente:

 $ 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 

Una forma definitiva de resolver esto sería establecer el tamaño de bloques de dd en un byte y luego establecer el número de bloques para leer como la sum de los tres tamaños anteriores:

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

Pero no puedo imaginar cuánto tomaría eso en realidad.

EDITAR : Una testing rápida de curiosidad de los anteriores mostró una velocidad de transferencia sólida de ~ 150 KB / s.


tl; dr ¿Cómo puedo copyr exclusivamente las primeras tres particiones de un disco que es mucho más grande que la sum de los tamaños de partición?

Solo copie las particiones que necesita y el MBR si lo necesita también.

El MBR se almacena en los primeros 512 bytes del disco.

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

Copia cada partición

 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 
Intereting Posts