%20del%20dispositivo%20extra%C3%ADble.png)
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 sda
y 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 dd
odcfldd
¿Qué puedo hacer? ¿Puedo usar dd
o 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
partimage
ogparted
no funcionó (la Raspberry no arranca). Sólodd
parece hacer la clonación sin defectos.SimilarPregunta, pero creo que no es lo mismo.
La
dcfldd
herramienta tiene la misma sintaxis y comportamiento quedd
. 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 dd
el 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
(dd
no 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 fdisk
listado). 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 sdSOURCE
y sdDESTINATION
por los nombres de dispositivo apropiados. Ejecute fdisk -l /dev/sdDESTINATION
and grep sdDESTINATION /proc/partitions
y file -s /dev/sdDESTINATION
cualquier otro comando que considere útil para asegurarse de que el dispositivo que está sobrescribiendo sea el dispositivo que pretendía sobrescribir.