Cómo reducir un archivo de imagen después de asignar espacio completo

13

Estoy en el proceso de experimentar con una copia de seguridad de una tarjeta SD Raspberry Pi (Raspbian). Estoy usando Win32DiskImager para leer la imagen (desde el lector de tarjetas SD) en mi HDD, con éxito, pero ahora el problema del tamaño. La imagen es simplemente más grande que la tarjeta SD original y solo se puede volver a escribir en una tarjeta SD más grande, lo que, si la respaldas, tiene el mismo problema.

Después de crear un archivo .img, ¿cómo puedo eliminar todo el espacio no utilizado nuevamente? (¿Esto se debe a que utilicé raspi-config para asignar todo el espacio disponible a la raíz?)

Traté de tener una idea de cómo se ven las particiones con Cygwin, pero no puedo lograr que fdisk funcione (-bash: fdisk: comando no encontrado) - (después de leer la imagen de una tarjeta de 16 Gb que contiene espacio no particionado en El final: ¿Truncamiento posible? )

Renier Delport
fuente

Respuestas:

12

Entonces, la mejor manera que he encontrado es usar GParted (puede usar un sistema operativo basado en Linux o arrancar desde un GParted Live USB). Es bastante simple encontrar instrucciones detalladas sobre cómo realizar cada uno de estos pasos en detalle, pero aquí está el método general que he encontrado que funciona:

  1. Ejecute GParted, encuentre su tarjeta SD en la lista de dispositivos y reduzca la partición principal al tamaño más pequeño posible.
  2. Tome el valor del último sector de esta partición y multiplíquelo por el tamaño del sector (512 para mí; supongo que esto es estándar, aunque puede verificar esto en la configuración GParted para su dispositivo): esto le dará el tamaño total en bytes copiar.
  3. Divida el número total de bytes por 4096 (redondee si es necesario, mejor tomar un poco más de espacio que no lo suficiente), y esto le dará el 'conteo' para luego ingresar el siguiente comando en el terminal en un Linux entorno (probablemente pueda hacer esto desde el terminal del sistema operativo USB GParted Live o en Cygwin sin sudo siempre que lo esté ejecutando como administrador):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

Cambie la ubicación del dispositivo de entrada si es necesario. Esto debería proporcionarle un archivo de imagen final que es el más pequeño posible, omitiendo el espacio vacío.

Mike Roberts
fuente
Puedo verificar que esto funcione. Lo intenté hace unos minutos para pasar de una tarjeta de 8GB a una tarjeta de 4GB. Esto debería funcionar siempre que sus datos sean más pequeños que su tarjeta de destino.
PNDA
Sort off olvidó esta publicación desde que me mudé. Lo probaré en el futuro. Parece que este es un problema común, así que gracias por su aporte.
Renier Delport
¡Esto debe marcarse como la respuesta correcta! ¡Gracias!
rodripf
alguna forma en Windows?
Flash Thunder
1
Puede arrancar desde un GParted Live USB.
Mike Roberts
7

Existe una buena herramienta llamada pishrink que reduce el tamaño de una imagen dd tanto como sea posible al reducir la partición raíz. Si inicia la imagen restaurada la primera vez que la partición se expande a su tamaño máximo nuevamente. Si ejecuta Windows, simplemente use su Linux en su Raspberry para reducir la imagen.

framp
fuente
0

La versión más reciente de Win32DiskImager tiene la opción de particiones asignadas de solo lectura. Escribe solo espacio usado, no vacío.

  1. Reducir la partición en la tarjeta SD con GParted.
  2. Cree una imagen con Win32DiskImager desde una tarjeta más grande.
  3. Escriba la imagen con Win32DiskImager en una tarjeta más pequeña usando la opción mencionada más arriba.
Pavol Fejko
fuente
-1

La respuesta simple es que no puedes. Si desea reducir la imagen, use compresión, que es lo que la mayoría hace (en 'NIX gzip funciona bien). Encontrará muchas discusiones sobre esto en este sitio.

La alternativa es hacer una copia de seguridad solo de los archivos. Mi enfoque se describe a continuación. /raspberrypi//a/28087/8697

Milliways
fuente
1
puede (si el contenido de datos es más pequeño que la nueva tarjeta SD)
Wilf
2
La compresión no ayudará. No se trata de espacio en disco donde se encuentra el archivo IMG. Es una cuestión de espacio en la tarjeta SD donde se escribirá el archivo IMG
Thomas Weller
@Thomas Comprimir el archivo IMG lo hará más pequeño para que (con suerte) encaje en la tarjeta SD en la que desea escribirlo ... ¿me estoy perdiendo algo?
user253751
@immibis: puede comprimir el archivo IMG para que use menos espacio en el disco duro de su PC. Si escribe los datos comprimidos en las tarjetas SD, no se iniciará. Los datos deben estar en el formato correcto para arrancar y no es formato gzip.
Thomas Weller
@Thomas Oh, pensé que el OP quería almacenar sus copias de seguridad en otra tarjeta SD por alguna razón, en lugar de restaurarlas.
user253751