EDITAR: Por alguna razón, solo se guardó una parte de mi publicación. Lo he actualizado ahora a su contenido completo.
Aunque este tema gira en torno a la Raspberry Pi, se aplica básicamente a todas las tarjetas SD que tienen la siguiente configuración: un sistema de archivos ocupa solo una fracción del tamaño total de la tarjeta. En resumen, el objetivo de esta pregunta es comprender cómo escribir.SOLOel FS (o más si hay varias particiones presentes) a una imagen de respaldo. Se pueden ver más detalles a continuación.
Cuando comencé a jugar con el Pi después de comprarlo en diciembre del año pasado, tuve un par de daños en la tarjeta SD y perdí su contenido. Se debió a que se apagó incorrectamente la energía en lugar de realizar un apagado normal, así que no hay problema aquí. Como cada vez que tenía que formatear la tarjeta, escribirle la imagen de Raspbian, ponerla en el Pi, iniciar la placa, expandir el sistema de archivos, reinstalar y reconfigurar todo, comencé a buscar mejores soluciones:
- cambiar el tamaño de la imagen y el FS en ellaantesescribiéndolo en la tarjeta SD -esteEl enlace ilustra perfectamente cómo aumentar una imagen (usando
dd
y/dev/zero
como fuente de entrada) y ajustarlaext4
(creo que es EXT4 para Raspbian (excluyendo la pequeña partición FAT32 para los componentes de arranque)). Esto resuelve el problema de tener que utilizar elexpandir el sistema de archivosCaracterística de la herramienta de configuración de Raspberry que básicamente consume el resto del espacio sin formato, ya sea 2 GB, 4 GB, 16 GB, 32 GB, etc. Por supuesto, aumentar la imagen también aumenta el tiempodd
necesario para escribirla en la tarjeta SD; sin embargo, también permite el siguiente paso de personalización, es decir - personalizar el software instalado: usar
chroot
oproot
(másqemu
) es posible (como se veaquíyaquí) para instalar/compilar lo que quieras si montas correctamente el FS de Raspbian ychroot
en él. Este también es un paso esencial para muchas compilaciones que requieren compilación cruzada (como Qt para Pi): puedes compilar cosas de forma nativa en Pi, pero requiere mucho espacio y mucho tiempo.
Así que esta es básicamente la forma en que he estado haciendo cosas para personalizar mis imágenes. El problema aquí es el conjunto de procedimientos involucrados en la operación inversa: tomar el contenido de la tarjeta SD y almacenarlo en su PC de manera óptima. La compresión es, por supuesto, una de las cosas cruciales que puedes hacer, pero no es suficiente. Al usarlo, dd
puede escribir toda la tarjeta SD (incluidos los bloques vacíos) en su computadora o seleccionar el tamaño y la cantidad de sectores que desee. La segunda forma ofrece un mejor uso del almacenamiento, pero requiere calcular cuidadosamente las cosas. Si acortas las cosas, podrías terminar con un FS roto (oh, no he visto esto muchas veces...).
Estoy buscando una solución que sea muy similar a la queclonezillaofertas - puedes clonarsólo los bloques que realmente tienen contenidoy tirar el resto asíreduciendo el FSy poder almacenar un FS completamente funcional en un espacio mucho más pequeño. Lo hice el año pasado cuando ayudé a mi vecino a guardar los datos de su disco duro roto en una MacBook.
Ejemplo: si tienes una instalación de Raspbian Jessie Lite, solo aprox. Se utilizarán 1,3 GB en su tarjeta SD. Ahora imagina si la tarjeta es de 32 GB. Claro, con el tiempo es posible que quieras formatear y usar el espacio restante, pero generalmente este no es el caso (al menos para mí). Entonces, si lo uso dd
a ciegas, básicamente crearé un archivo de imagen de 32 GB. La compresión se encargará de la mayoría de los gigabytes allí, pero volver a escribirlos en la tarjeta SD más adelante para restaurar algún estado anterior de su Raspbian será un proceso muy, muy largo. También puedo copiar el FS (nuevamente con dd
). Pero, ¿qué pasa si la instalación real (todos los archivos) ocupa sólo 600 MB aproximadamente en esa partición? ¿Por qué querría copiar 1,3 GB cuando solo necesito 600 MB? ¿Y qué pasa si tengo una tarjeta SD con un Raspbian donde se usó la función "expandir sistema de archivos" de la herramienta de configuración y toda la tarjeta SD está formateada aunque n
en realidad se esté usando un porcentaje de ella?
¿Alguna idea de cómo lograr esto con el menor esfuerzo y retoques posible?
Respuesta1
Vuelque/restaure la pequeña partición FAT dd
(si es necesaria), pero use e2image -a
(desde ele2fsprogspaquete) para la partición principal. Para restaurar a flash, la -c
opción parece útil (sólo sobrescribe lo que es realmente diferente en el destino).
Respuesta2
Bueno, aunque no respondo directamente a tu pregunta, esto es lo que hice para facilitar las restauraciones.
- Agregue el contenido de la tarjeta SD a un archivo, después de que se hayan instalado todos los paquetes necesarios.
- bcomprima el archivo con la máxima compresión y mantenga el archivo de datos comprimido con gzip como copia de seguridad
- En caso de corrupción, restaure el archivo de respaldo después de bunzip usando dd