Usar DD para copiar solo la mitad (parte) del dispositivo extraíble

Usar DD para copiar solo la mitad (parte) del dispositivo extraíble

Tuve unTarjeta SD de 32GBcon esta estructura (o muy cercana):

luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 29.2 GiB, 31393316864 bytes, 61315072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec4e4f57

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1             1   125000   125000   61M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3      33292288 61315071 28022784 13.4G 83 Linux

Y yotransferido(desde otra computadora, entonces los dispositivos donde sday sdb) a (elijo el incorrecto)Tarjeta SD de 64GBvía dd( dcfldd, de hecho):

# dcfldd if=/dev/sda of=/dev/sdb bs=1M

Ahora, mi nueva tarjeta SD de 64 GB es:

luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec4e4f57

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1             1   125000   125000   61M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3      33292288 61315071 28022784 13.4G 83 Linux

Bueno, no hay problema por ahora, pero ahora ya no tengo la tarjeta SD de 32 GB de origen, solo queda la tarjeta SD de 64 GB y me gustaría transferirla nuevamente a alguna tarjeta SD de 32 GB vacía.
En este caso, asumo que no puedo usar ddodcfldd

¿Qué puedo hacer? ¿Puedo usar ddo dcfldd? ¿Qué podría pasar cuando llegue la transferencia alLímite de 32 GBen la tarjeta SD de destino (problemas de integridad de datos)?

Notas adicionales:

  • Cualquierotro metodoclonar las tarjetas SD estaría bien, pero tengo un problema: este caso es una unidad de arranque de tarjeta SD para unFrambuesa Pi 2, y la clonación vía partimageo gpartedno funcionó (la Raspberry no arranca). Sólo ddparece hacer la clonación sin defectos.

  • SimilarPregunta, pero creo que no es lo mismo.

  • La dcflddherramienta tiene la misma sintaxis y comportamiento que dd. Simplemente brinda más información (progreso... etc.). Aquí está elpágina de manual.

Respuesta1

Suponiendo que sda ​​es su tarjeta SD de origen de 64 GB y sdb es su tarjeta SD de destino de 32 GB. Puede limitar dd para copiar solo la cantidad de sectores requeridos con:

dd if=/dev/sda of=/dev/sdb bs=512 count=61315072

Respuesta2

He hecho esto con discos duros muchas veces: simplemente colocas ddel grande sobre el pequeño. Fallará cuando llegue a los 32 GB, pero está bien.

Si aún tienes dudas, te sugiero que intentes hacerlo en la vieja memoria USB/disco duro que tienes por ahí.

Respuesta3

Puede utilizar cualquier herramienta para realizar la copia, como cat(ddno tiene ninguna ventaja sobre cat, sólo desventajas). Se detendrá cuando llegue al final del disco de destino. La desventaja de este enfoque simple es que es difícil saber si la copia de la pieza que le interesaba fue exitosa.

Para asegurarse de que el comando de copia devuelva un estado exitoso si copia exitosamente lo que desea copiar y genera errores en caso contrario, use un comando que copie la cantidad correcta de datos. Para copiar los primeros N bytes de un archivo, utilice head -c. La cantidad de bytes a copiar es la cantidad de sectores multiplicados por el tamaño del sector (512 bytes en su fdisklistado). No olvide que los sectores comienzan en 0 (el sector 0 contiene la tabla de particiones), por lo que el número total de sectores a copiar es el valor "final" más grande más uno.

head -c $((61315071*512+512)) /dev/sdSOURCE >/dev/sdDESTINTATION

Reemplace sdSOURCEy sdDESTINATIONpor los nombres de dispositivo apropiados. Ejecute fdisk -l /dev/sdDESTINATIONand grep sdDESTINATION /proc/partitionsy file -s /dev/sdDESTINATIONcualquier otro comando que considere útil para asegurarse de que el dispositivo que está sobrescribiendo sea el dispositivo que pretendía sobrescribir.

información relacionada