Dispongo de una Raspeberry PI desde Octubre de 2013 y son muchas las pruebas que he hecho con ella instalando, reinstalando y volviendo a instalar sistemas operativos.
El uso general que le he querido dar a la Pi es el de centro multimedia y por ello, he probado los tres sistemas que reinaban hasta la fecha: open elec, Raspbmc y Xbian; finalmente, quedándome con Xbian por su principio de base linux y por dar, en mi opinión, un mejor rendimiento que Raspbmc, tanto a la hora de instalar drivers para un pincho wifi como por su estabilidad.
Tanta personalización del sistema hace que termine entrando pereza a la hora de probar algo nuevo puesto que, a no ser que tengas varias tarjetas SD, tienes que reinstalar y volver a configurar todo el sistema. Que no es poco cuando salseas y la usas para más cosas como yo, que no sólo uso la Raspberry Pi para reproducción multimedia, sino que le doy otros usos y sólo recuperar el estado actual me supondría varios días.
Por este motivo, una buena idea es realizar un backup de todo el sistema operativo para salvar el estado de la Raspberry y guardar una imagen de ella en nuestro disco duro. A continuación, explico paso a paso cómo hacer Mac OS X una copia de seguridad de la tarjeta SD para poder restaurarla con todo el sistema exactamente igual que como lo guardamos.
Como recomendación personal, recomiendo a todos aquellos que tengan una Raspberry Pi y que hayan modificado algo del sistema operativo que le hayan instalado, que hagan un clon de la tarjeta. Todos sabemos que las tarjetas SD tienen una vida útil «reducida» de número de escrituras y al usarlas como sistema operativo (que constantemente está escribiendo en la tarjeta), ésta se ve mermada.
Vamos a clonar la tarjeta SD para poder re-flashearla con el sistema operativo exactamente igual a como lo habíamos dejado. Naturalmente, esto no es tan sencillo como conectar la tarjeta SD a nuestro ordenador y copiar su contenido, ya que de primeras, el ordenador no reconocerá su contenido.
Por tanto, haremos uso del terminal de Mac OS X y el comando dd que, por cierto, es el mismo comando de Linux por lo que partes de este artículo serán aplicables en un PC con Linux.
Localizar la ruta del montado de la tarjeta
Lo primero que tenemos que hacer es apagar la Raspberry PI y extraer su tarjeta SD. Después la introducimos en el ordenador, abrimos el terminal y ejecutamos el siguiente comando que proporcionará la lista de discos y volúmenes conectados al ordenador.
diskutil list
En la imagen superior, podemos observar que la tarjeta SD corresponde a /dev/disk1, por lo que ejecutaremos el comando dd sobre él, lo explicaremos a continuación.
Creación de la imagen del sistema operativo
sudo dd if=/dev/rdisk1 of=~/Desktop/raspberrypi.img bs=1m
Donde if significa ‘input file’ y asignaremos la ruta de la propia tarjeta SD. Nótese que añadimos el prefijo ‘r’ a ‘disk’ para indicar dónde se sitúa el almacenamiento raw de la tarjeta: /dev/rdisk1. Es muy importante hacerlo así.
Por su parte, of hace referencia al ‘output file’ y especificamos la ruta absoluta del destino donde queremos que nos guarde la imagen de la tarjeta SD. En este caso, creará un fichero de nombre raspberrypi.img en el escritorio. El símbolo ~ de Unix representa el directorio home de nuestro usuario.
Por último, bs significa ‘block size’. Para este parámetro he escogido 1MB, no por algún motivo especial, sino porque es el que aconsejan utilizar con el comando dd.
Ojo, el comando dd requiere ser ejecutado con permisos de administrador, por tanto, hacemos uso de sudo que nos solicitará la clave de administrador cuando lo ejecutemos (la clave de nuestro usuario de Mac OS X).
Aconsejo que no desesperéis durante este proceso ya que no es algo inmediato. Los datos se han de transferir a nuestro ordenador y es un proceso que lleva sus minutos. Como ejemplo, la tarjeta que he utilizado para este ejemplo es de 16GB y ha tardado al rededor de 13 minutos. A continuación el mensaje resultante de la instrucción ejecutada:
Y con esto, finalmente, veremos en nuestro escritorio el fichero que habíamos especificado como output file: raspberrypi.img cuyo peso será el mismo que el de la tarjeta SD, 16GB.
Una pregunta tonta… Si el sistema de la RasPi esta basado en Linux porque no crear un programilla que ejecute periódicamente ese comando para hacer backups a un disco duro externo? Podríamos programarlo cada 15 días por ejemplo, que lo ejecute por la noche (por la cosa de la lentitud) y que genere unos cuantos backups rotatorios (para no terminar llenándolo todo de backups)
Hola Guillermo, interesante observación y gracias por tu comentario.
Sin embargo, no creo que realmente sea necesario. Una imagen del disco es para tener una copia de seguridad completa del sistema. Una vez tienes la versión estable del SO con todo a tu gusto, para qué realizar copias cada 15 días?
En mi propia experiencia, que suelo hacer desarrollos en forma de prueba con bastante periodicidad, lo que suelo hacer es localizar todos esos scripts en una zona y después, de ese directorio, hago copias incrementales con rsync. Con este método, tengo todos los ficheros a buen recaudo en un disco externo. Si alguna vez se me corrompe la tarjeta, restauraré la última imagen que tengo del sistema y después transmitiré la copia que tengo con los scripts que pruebo, llegaría más o menos al mismo punto en el que estoy.
Tengo pendiente una entrada en la que explicaré cómo preparo mis copias de seguridad 🙂
Un saludo!