Backup de tarjeta SD o XBMC en Raspbmc

Para evitar sustos por corrupción de la tarjeta SD de nuestra Raspberry Pi y encontrarnos con que tenemos que reinstalar todo el sistema de nuevo, lo más adecuado sería realizar copias de seguridad periódicas del sistema, ya sea una copia completa de la tarjeta SD o únicamente un backup de los datos que nos interesan (XBMC por ejemplo).

Backup completo de la tarjeta SD (imagen de disco)

Raspbmc LogoUna forma rápida de hacer un backup de la tarjeta SD de la Raspberry Pi es utilizar el comando «dd» para crear una imagen completa del disco de modo que a la hora de restaurar el backup nos encontraremos el sistema exactamente igual que como cuando hicimos la copia de seguridad.

Para hacer este tipo de copia, debemos sacar la tarjeta SD de la Raspberry Pi y ponerla en un lector de tarjetas del portatil o del ordenador. Cuando la hayamos introducido debemos averiguar cual es el disco asignado a la tarjeta en el sistema operativo:

El comando dmesg mostrará el identificador asignado al disco:

# dmesg | tail
[10164.569146] mmc0: new SDHC card at address aaaa
[10164.929204] mmcblk0: mmc0:aaaa SL08G 7.40 GiB 
[10164.937445]  mmcblk0: p1 p2

Y ejecutando un fdisk podremos confirmar que el sistema lo reconoce correctamente:

# fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
4 heads, 16 sectors/track, 242560 cylinders, total 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
Disk identifier: 0x000798a3

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            4096      147455       71680    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          151552    15523839     7686144   83  Linux

Ahora que ya sabemos el identificador del disco vamos a hacer la imagen del disco. IMPORTANTE, el disco o sus particiones no deben estar montadas en el sistema a la hora de hacer el dd:

# mount  | grep mmc
/dev/mmcblk0p1 on /media/CEC6-297F type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
/dev/mmcblk0p2 on /media/ddac449a-c8ae-4705-bf0b-c0ca743848b1 type ext4 (rw,nosuid,nodev,uhelper=udisks)
# umount /dev/mmcblk0p1
# umount /dev/mmcblk0p2
# mount  | grep mmc
# 

Finalmente ejecutamos el dd para clonar el disco, lo podemos clonar en una tarjeta SD que tenga el mismo tamaño o volcarlo a un fichero de imagen. Indicamos origen (if), destino (of) y tamaño del bloque (bs):

# dd if=/dev/mmcblk0 of=/var/tmp/raspmbc.img bs=1M

7580+0 records in
7580+0 records out
7948206080 bytes (7.9 GB) copied, 1029.01 s, 7.7 MB/s

Restaurar backup completo de la tarjeta SD (imagen de disco)

Para restaurar la imagen que previamente hemos creado con el comando dd, simplemente cambiamos el origen (ahora es la imagen) y el destino (ahora es el disco):

# dd if=/var/tmp/raspmbc.img of=/dev/mmcblk0 bs=1M

Backup de la configuración de XBMC

Si únicamente utilizamos Raspbmc en nuestra Pi para hacer uso de XBMC, podemos hacer únicamente backup de la configuración de XBMC, que se guarda en el directorio oculto «.xbmc» del usuario que ejecuta el programa, normalmente el usuario «pi».

Para hacer la copia de seguridad de la config de xbmc, tan sencillo como conectarnos por SSH al sistema, comprimir el directorio .xbmc y descargarlo a una ubicación externa. Podemos usar un script que haga uso de SSH, SCP, RSYNC, FTP… hay múltiples formas, manualmente sería tan sencillo como:

Acceder a Raspbmc:

$ ssh pi@raspbmc

Comprimir la configuración de xbmc:

$ tar -czvf xbmc_config.tar.gz .xbmc/

Descargar el backup (scp, ssh…):

$ scp pi@raspbmc:/home/pi/xbmc_config.tar.gz .

También podríamos usar rsync y hacerlo todo en un paso, creando un espejo en local del directorio .xbmc de la raspberry:

$ rsync -avz pi@raspbmc:/home/pi/.xbmc /home/backup/xbmc

Restaurar la configuración de XBMC

Restaurar la configuración de XBMC a partir del directorio .xbmc es tan sencillo como sustituir el directorio por el de nuestra copia de seguridad. Lo hacemos con XBMC parado:

pi@raspbmc:[~] $ sudo initctl stop xbmc
pi@raspbmc:[~] $ tar -xzvf xbmc_config.tar.gz
pi@raspbmc:[~] $ sudo initctl start xbmc