Este es uno de los capítulos del tutorial La Raspberry Pi. Primera primeros pasos.. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
En este artículo veremos como hacer una copia de seguridad de la Raspberry Pi. En los dos primeros artículos vimos los pasos básicos para montar tu Raspberry Pi y la instalación del sistema operativo Raspbian.
Sin embargo en un momento determinado, es posible que consideremos la necesidad de instalar otro sistema operativo para probar otras cosas. También es posible que queramos salvaguardar la información por si en un momento determinado tenemos un problema con la tarjeta micro SD.
Lo cierto es que realizar una copia de seguridad siempre es una buena práctica que debemos hacer a menudo para evitar llevarnos sorpresas desagradables.
Hacer una copia de seguridad de la Raspberry Pi
Hasta el momento no lo he comentado, pero seguro que tu ya te habrás dado cuenta. Todos estos artículos están orientados a usuarios de distribuciones Linux. Por supuesto que cualquier usuario de otro sistema operativo, en un momento determinado puede instalar Linux y pasarse del lado oscuro al lado de la fuerza, pero esto ya es opcional.
Como he indicado en la introducción es fundamental hacer copias de seguridad, y para ello, utilizaré el terminal de mi equipo. No podemos hacer la copia de la Raspberry Pi en el pequeño dispositivo.
Con ello los pasos a realizar son,
- Apagar la Raspberry Pi. Para este primer paso entraremos en la Raspberry vía ssh y ejecutaremos la siguiente orden,
sudo shutdown now
- El siguiente paso es introducir la micro SD en nuestro equipo y ver donde se ha montado. Para ver donde se ha montado ejecutaremos la orden,
df -h
df
es una sencilla utilidad que nos permite ver las unidades montadas en nuestro equipo y el espacio disponible que tenemos en cada una de ellas. Evidentemente, nosotros solo necesitamos conocer que unidades tenemos montadas.
En general en mi equipo aparecen /dev/mmcblk0pX
donde la X se sustituye por cada una de las particiones montadas.
Otra opción es utilizar la orden,
sudo fdisk -l
fdisk
es una herramienta disponible en las distribuciones GNU/Linux que permite gestionar particiones. Esta nos puede ser de utilidad en el caso de que no se haya montado ninguna partición, con lo que no sabremos lo que debemos hacer. Sin embargo, es recomendable utilizar la otra utilidad, df -h
porque no necesitas derechos de administrador.
Por ejemplo en mi caso al ejecutar df -h
obtengo el siguiente resultado,
S.ficheros Tamaño Usados Disp Uso% Montado en /dev/mmcblk0p2 30G 1,2G 27G 5% /media/lorenzo/673b8ab6-6426-474b-87d3-71bff0fcebc3 /dev/mmcblk0p1 42M 21M 21M 51% /media/lorenzo/boot
Nota: Solo he dejado lo que nos interesa
Como vemos, tenemos montadas dos particiones de nuestra unidad micro SD.
Debemos desmontar esas dos particiones para realizar la copia de seguridad. Para ello ejecutaremos las siguientes órdenes,
umount /dev/mmcblk0p1 umount /dev/mmcblk0p2
Una vez ejecutadas, vuelve a ejecutar df -h
para asegurarte que no están montadas.
Antes de continuar debes comprobar que tienes suficiente espacio en tu equipo. Si por ejemplo, eres un avaricioso, y te has comprado una tarjeta de 32 GB, cuando hagas la copia de seguridad crearás una imagen de ese tamaño. Otra razón mas para utilizar una de 8GB.
Ahora realizamos la copia de seguridad utilizando dd
para ello. La orden será algo como lo que ves a continuación,
sudo dd if=/dev/mmcblk0 of=/home/lorenzo/cds_20170714.dd bs=4M status=progress; sync
En mi caso, he puesto la copia de seguridad en /home/lorenzo/
y la he llamado cds_20170714.dd
. Evidentemente, tu deberás ubicarla en el directorio que creas conveniente.
Ahora debemos comprobar que la copia de seguridad que hemos realizado es correcta. Para ello, ejecutaremos las orden,
sha1sum cds_20170714.dd
Esto nos dará un resultado como el que ves a continuación,
f64c68ddd592979aa5d944b02cd9aeab90e9d1a0 cds_20170714.dd
Ahora realizaremos la misma operación sobre la tarjeta micro SD,
sudo sha1sum /dev/mmcblk0
Que nos da el resultado,
f64c68ddd592979aa5d944b02cd9aeab90e9d1a0 /dev/mmcblk0
Evidentemente las dos sumas de comprobación deberán ser iguales. De lo contrario tenemos un error, y debemos realizar nuevamente la copia de seguridad.
Por último, tal y como he comentado anteriormente, la copia de seguridad que hemos realizado tendrá el tamaño de la tarjeta micro SD, en mi caso 32 GB. Sin embargo la podemos comprimir para reducir sensiblemente este tamaño y que no nos ocupe tanto espacio.
Para comprimir la imagen podemos ejecutar la siguiente orden,
tar -czvf cds_20170714.tar.gz cds_20170714.dd
En mi caso particular al listar ambos archivos el resultado es el siguiente,
-rw-r--r-- 1 root root 32010928128 jul 14 13:14 cds_20170714.dd
-rw-rw-r-- 1 lorenzo lorenzo 560609498 jul 14 13:35 cds_20170714.tar.gz
He pasado de un tamaño a otro, con una reducción de la capacidad de X.
Restaurar la copia de seguridad
En el caso de que ya hayamos terminado con lo que sea que estuviéramos haciendo en nuestro equipo, ya podemos restaurar la copia de seguridad.
La operación de restaurar la copia de seguridad de la Raspberry Pi es muy sencillo, tan solo debemos ejecutar la orden
tar xzOf cds_20170714.tar.gz | sudo dd of=/dev/mmcblk0 bs=1M status=progress; sync
Aquí toda la gracia reside en O
que permite que la salida de tar
vaya a dd
.
Realizar una copia de seguridad remota
Evidentemente esto conlleva tener que parar tu Raspberry, extraer la tarjeta SD, etc, y como la naturaleza del ser humano es vaga por naturaleza, solo por ahorrarnos estas operaciones terminamos por no hacer copia de seguridad hasta que llega el fatídico día.
Una solución para evitarnos esto es hacer una copia de seguridad remota. Esto es tan sencillo, en mi caso, como ejecutar la siguiente orden desde un emulador de terminal,
ssh pi@192.168.1.148 "sudo dd if=/dev/mmcblk0 bs=1M | gzip -" | dd of=/home/lorenzo/cds_20170714.gz
Como ves en este caso he utilizado gzip para realizar la compresión y enviarlo vía ssh. Este proceso es lento, en particular, en mi caso, se tomó mas de 50 minutos en hacer la copia de seguridad.
En el caso de que necesites restaurar la copia de seguridad, esto si que deberás hacerlo desde tu ordenador, quemando, una tarjeta sd. El proceso es similar al que hemos visto anteriormente, pero en lugar de partir de tar partimos de gzip. La orden sería la siguiente,
gzip -dc /home/lorenzo/cds_20170714.tar.gz | sudo dd of=/dev/mmcblk0 bs=1M status=progress; sync
Conclusiones
Como puedes ver hacer una copia de seguridad de la tarjeta micro SD de tu Raspberry Pi es algo tremendamente sencillo, aunque invertirás algo de tiempo. Una opción sería crear un script para realizar todas las operaciones (desmontar, copiar, comprobar y comprimir) de forma desatendida.
Si además te decides a hacerlo de forma remota, lo puedes automatizar utilizando para ello cron, y enviarlo a otro servidor o a tu ordenador, según tus posibilidades.
Más información,
http://berryboot.alexgoldcheidt.com/images/
No quiero parecer enterado, pero Raspbian tiene una herramienta para copia de seguridad que clona la tarjeta sin desmontar ni nada de eso y sin necesidad de un PC con Linux.
Hola Manuti,
¿Sabes cual es la herramienta o me puedes indicar alguna página donde mirar? La incorporaré al artículo.
Muchas gracias y un saludo.
Es SD card copier está incluida desde la actualización de mayo de 2016 de Raspbian https://www.raspberrypi.org/blog/another-update-raspbian/
Hola Manuti,
Por lo que parece esa es una herramienta gráfica, ¿no?. Yo he instalado Raspbian sin servidor gráfico, puesto que hasta el momento no lo he necesitado. Por eso explico como hacerlo de esta forma.
De todas formas, tomo nota de tu comentario para tenerlo en cuenta en los próximos artículos cuando inicie el servidor gráfico.
Muchas gracias por tus comentarios, que siempre son bienvenidos y un saludo.
Sí, es gráfica pero no sé si se podrá usar también desde la línea de comandos. La verdad es me produce mucho respeto comentar en tu blog así que gracias por tenerlo en cuenta.
Hola Manuti,
Probaré a ver si puedo hacerlo desde el sitio. En cuanto a lo que comentas de «me produce mucho respeto»…, ¿Por que lo dices? Espero no haberte molestado
Gracias
Nooooo, es que para mí eres un referente en Linux y verte un poco como principiante con Rasbperry y corregirte un poco me resulta raro.
Va, no te preocupes para nada, aquí estamos para aprender, compartir, difundir y disfrutar. Yo disfruto mucho con todo esto.
Muchas, muchas gracias.
Hola, hay un error en el comando para restaurar el backup de la tarjeta, te falta indicar el fichero de entrada, seria algo así:
sudo dd if=/ruta/backup.img of=/dev/mmcblk0 bs=4M status=progress; sync
Un saludo y felicidades por el blog
Hola Hefistion,
Muchas gracias por las felicitaciones. En referencia al error que comentas, indicarte que no es tal error. Si te fijas el parte izquierda se descomprime el archivo que se envia a la parte derecha que es `dd`. De otra manera debíamos descomprimir primero.
Gracias por tu comentario y un saludo
Gracias por la aclaración pensaba que dd necesitaba de if, eso me pasa por no probarlo antes ;-).
Lo dicho a seguir con el blog y el fenomenal trabajo que realizas. Salu2.
en armbian no funciona 🙁
Hola,
Para hacer la copia localmente, desmontas las particiones. ¿Por qué no haces lo mismo cuando la copia la realizas remotamente?
Muchas gracias.
Hola Lorenzo, tendrás alguna actualización de este artículo? sería bueno un update tomando en cuenta que ahora muchas raspberrys están trabajando con disco local ssd