Saltar al contenido

¿Cómo crear una imagen .IMG de un disco (tarjeta SD) sin incluir espacio libre?

La guía paso a paso o código que verás en este post es la solución más rápida y efectiva que encontramos a tus dudas o dilema.

Solución:

Una manera bastante buena y simple de lidiar con esto es simplemente canalizarlo a través de gzip, algo como esto:

# dd if=/dev/sdb | gzip > backup.img.gz

De esta manera, su imagen se comprimirá y lo más probable es que el espacio no utilizado se reduzca a casi nada.

Usaría esto para restaurar dicha imagen:

# cat backup.img.gz | gunzip | dd of=/dev/sdb

Una nota: si tenía muchos archivos que se eliminaron recientemente, el tamaño de la imagen puede ser aún grande (la eliminación del archivo no necesariamente pone a cero los sectores subyacentes). Puede borrar el espacio libre creando y eliminando inmediatamente un archivo grande que contenga ceros:

# cd /media/flashdrive
# dd if=/dev/zero of=bigfile bs=1M     # let it run and quit by disk full error
# rm bigfile

Lo mejor que puedes hacer es

  1. Copie todos los archivos de todas las particiones conservando los metadatos

    mkdir -p myimage/partition1

    mkdir myimage/partition2

    sudo cp -rf --preserve=all /media/mount_point_partition1/* myimage/partition1/

    sudo cp -rf --preserve=all /media/mount_point_partition2/* myimage/partition2/

  2. Extraer el MBR

    sudo dd if=/dev/sdX of=myimage/mbr.img bs=446 count=1

    reemplazar /dev/sdX con el dispositivo correspondiente.

  3. Particione el disco de destino en particiones con tamaños mayores que los datos copiados y debe tener el mismo formato y las mismas banderas usando gparted. Google cómo particionar un disco.

  4. Monte el disco recién formateado y particionado. En la mayoría de las computadoras, solo necesita conectar el disco y puede encontrar las particiones montadas en /media carpeta.

  5. Copie los datos copiados previamente a las particiones de destino usando los siguientes comandos

    sudo cp -rf --preserve=all myimage/partition1/* /media/mount_point_partition1/

    sudo cp -rf --preserve=all myimage/partition2/* /media/mount_point_partition2/

  6. Copie de nuevo el MBR

    sudo dd if=myimage/mbr.img of=/dev/sdX bs=446 count=1

¡Ahora disfruta de tu nuevo disco!

Utilizando el bs y contar parámetros de ddpuede limitar el tamaño de la imagen, como se ve en el paso 2 de la respuesta 1665017.

Es posible que ya sepa qué tamaño de imagen desea crear. Si no, puede obtener una buena idea de df:

df -H --total /

Sustituir / con una lista separada por espacios de todos los puntos de montaje relacionados con las particiones del disco.

Una forma más precisa podría ser usar fdisk o su editor de particiones preferido y póngase a trabajar con una calculadora.

$ fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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: 0x00057540

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        2048  186367  184320   90M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      186368 3667967 3481600  1.7G  5 Extended
/dev/mmcblk0p5      188416 3667967 3479552  1.7G 83 Linux

Espacio total utilizado en bytes = sector final de la última partición X tamaño del sector (aquí es 3667967 x 512).

Espacio total utilizado en GB = espacio total utilizado en bytes / 10243 (aquí son 1,749023 GB).

Si decide, por ejemplo, que su imagen debe tener exactamente 2 GB, el siguiente comando lo hará:

dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048

La imagen resultante también incluirá el ruido aleatorio más allá de la mayor extensión de la última partición.

no te olvides de sudo los comandos anteriores si su cuenta aún no tiene suficientes privilegios.

Para mis propósitos, no necesito una imagen que esté perfectamente recortada hasta el último bit de datos, por lo que cuando el tamaño real es de 1,75 GB, una imagen de 2 GB es suficiente para mí. Esto elimina los otros 6 GB (o 30 GB o lo que el dispositivo tenga disponible) de espacio no utilizado que, de otro modo, estaría en la imagen.

He visto consejos en muchos lugares que dd deberían no realizarse en una partición montada y lo seguí porque parece intuitivamente correcto; parece más bien como tratar de dibujarte a ti mismo haciendo un boceto en un espejo con el boceto que estás haciendo también visible en el boceto. Es un poco incompleto.

valoraciones y comentarios

Al final de la post puedes encontrar las anotaciones de otros usuarios, tú también tienes la libertad de mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *