sábado, febrero 07, 2015

Hacer respaldo de memoria SD / microSD en Mac OS X

Cuando una instalacion de Raspbian o de OpenElec me gusta como ha quedado luego de trabajar en ella por dias, le saco un respaldo. En esta ocasion actualicé una instalacion nueva de Raspbian de Estable a Debian-Testing(Jessie) y para variar no me ha dado problemas, asi que estoy aprovechando para hacer su respaldo; y tambien para dejar este “recetario” de comandos relacionados.

Uso la terminal como super usuario en todo el proceso y ejecuto comandos que pueden limpiar el disco duro de tu Mac, por lo que no te los recomiendo si es tu primera vez; si en verdad vas a ejecutar estos comandos, intenta primero con una memoria de pruebas, y presta mucha atencion en el nombre del dispositivo. En caso de dudas revisa los manuales de los comandos (los "man pages"), en mi caso, estos comandos trabajan a la perfeccion en OSX 10.10.2.

Para hacer el respaldo de la memoria...


Hago uso de un adaptador USB para mi memoria Sandisk microSD, asegurate de revisar bien el nombre por si es distinto en tu caso. Inserta la memoria y ejecuta el siguiente comando:


$ sudo diskutil list
Password:
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *7.9 GB     disk1
   1:             Windows_FAT_32 boot                    58.7 MB    disk1s1
   2:                      Linux                         7.9 GB     disk1s2

Mi tarjeta es de 8GB, por lo que se ve que esta en /dev/disk1. Ahora bien, usaré /dev/rdisk1 (raw), pues es considerablemente mas rapido (en escritura, no se en lectura, pero por lo que he leido ni para que intentarlo).

Ahora obtengamos el contenido de la memoria. Modifica el nombre del archivo donde guardaras la imagen segun tus necesidades.


$ sudo dd bs=1m if=/dev/rdisk1 of=~/Developer/Rpi/20150207-home_rpi-jessy.img
7580+0 records in
7580+0 records out
7948206080 bytes transferred in 381.335109 secs (20843101 bytes/sec)

Si quieres obtener el contenido de la memoria y comprimirlo al vuelo, puedes hacerlo con el siguiente comando:


$ sudo dd bs=1m if=/dev/rdisk1 | gzip > ~/Developer/Rpi/20150207-home_rpi-jessy.img.gz
Password:
7580+0 records in
7580+0 records out
7948206080 bytes transferred in 599.010253 secs (13268898 bytes/sec)

El tiempo final puede variar dependiendo de la velocidad del CPU del equipo, en este caso con una imagen de 8GB, subio de 6 minutos a 10 minutos, pero de 8GB que ocupa normalmente la imagen, ahora comprimida mi imagen ocupa 2GB, por lo que en mi opinion, vale la pena el esfuerzo extra.

Para terminar, cambiamos de propietario al archivo, solo para asegurarnos que sea nuestro.


sudo chown Neko:staff ~/Developer/Rpi/20150207-home_rpi-jessy.img.gz

Y listo!


Para recuperar el respaldo de la memoria...



Insertamos la memoria en la que vamos a escribir la imagen y averiguamos donde se encuentra montado usando el comando df -h.

Filesystem      Size   Used  Avail Capacity   iused   ifree %iused  Mounted on
/dev/disk0s2   465Gi  427Gi   38Gi    92% 111974544 9912198   92%   /
devfs          184Ki  184Ki    0Bi   100%       636       0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%         0       0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%         0       0  100%   /home
/dev/disk1s1   7.4Gi  160Ki  7.4Gi     1%         0       0  100%   /Volumes/NO NAME

Desmonta la(s) particion(es) usando el comando diskutil unmount.


$ sudo diskutil unmount /dev/disk1s1
Password:
Volume NO NAME on disk1s1 unmounted

Asegurate de desmontar todas las particiones del dispositivo. Una vez hecho esto, escribimos la imagen en el disco con dd, de nuevo usando rdisk1 como dispositivo.

$ sudo dd bs=1m if=~/Developer/Rpi/20150207-home_rpi-jessy.img of=/dev/rdisk1

O en el caso de que tengas el respaldo comprimido con gzip, usa el siguiente comando

$ gzip -dc ~/Developer/Rpi/20150207-home_rpi-jessy.img.gz | sudo dd bs=1m of=/dev/rdisk1
Password:
0+121280 records in
0+121280 records out
7948206080 bytes transferred in 603.882491 secs (13161842 bytes/sec)

Si notas que el proceso tarda demasiado, puedes ver los avances presionando Ctrl + T para que dd te muestre unas estadisticas.

load: 0.81  cmd: dd 6997 uninterruptible 0.33u 12.43s
0+100996 records in
0+100995 records out
6618808320 bytes transferred in 502.855856 secs (13162437 bytes/sec)

Dependiendo de el contenido de la imagen, antes de sacar la memoria, hay que Expulsarla para que OSX no se queje.

Y listo!

Mas informacion: 


Dando señales de vida...
Kenrro.

No hay comentarios.: