Cómo respaldar y restaurar de forma segura la imagen de una tarjeta SD de Raspberry Pi



Supongamos que por fin dejaste una Pi configurada exactamente como la querías -- servicios andando, los dotfiles ajustados, ese cron que te costó tres intentos hacer bien -- y ahora querés probar algo arriesgado en ella. Antes de hacerlo, cloná toda la tarjeta SD a un archivo. Si algo sale mal, volvés a un estado funcional en minutos en vez de rehacer el trabajo de todo un fin de semana.

Lo que necesitás

  • La tarjeta SD que querés respaldar, y una computadora de repuesto con lector de SD, o otra Pi desde la que correr el respaldo
  • Suficiente espacio libre en disco para una imagen completa de la tarjeta (una tarjeta de 8GB necesita unos 8GB libres, antes de comprimir)
  • Una segunda tarjeta SD, si vas a restaurar en un medio nuevo en vez de la misma tarjeta

dd backup and restore flow between two SD cards and an image file Working SD pi_backup .img New SD card dd if=/dev/sdX of=pi_backup.img dd if=pi_backup.img of=/dev/sdX

Encontrar el dispositivo correcto -- con cuidado

Este es el paso donde la gente termina borrando el disco equivocado. Antes de tocar dd, listá tus discos y asegurate bien de cuál es la tarjeta SD:

lsblk
# o, en macOS:
diskutil list

Buscás el dispositivo completo (/dev/sdb o /dev/mmcblk0, por ejemplo), no una de sus particiones (/dev/sdb1). Comparando el tamaño con la capacidad real de la tarjeta confirmás que elegiste la correcta -- dd no pregunta dos veces.

Respaldar la tarjeta

Desmontá primero las particiones de la tarjeta, y después volcá todo el dispositivo a un archivo:

sudo umount /dev/sdb1 /dev/sdb2
sudo dd if=/dev/sdb of=~/pi_backup.img bs=4M status=progress conv=fsync

bs=4M acelera la copia al leer en bloques más grandes, status=progress te muestra un avance en vivo para que no te quedes mirando una terminal en blanco, y conv=fsync asegura que todo quede efectivamente escrito en disco antes de que el comando termine. Para una tarjeta de 8GB por USB 2.0, calculá entre diez y veinte minutos.

El archivo .img resultante tiene el tamaño completo de la tarjeta, en su mayoría espacio vacío. Si querés achicarlo antes de archivarlo, PiShrink recorta la imagen hasta dejar solo los datos que realmente tiene:

sudo ./pishrink.sh pi_backup.img

Restaurarla en una tarjeta nueva

Hay dos formas de volcar esa imagen de vuelta. Con dd directamente, aplica la misma precaución con el nombre del dispositivo -- esta vez lo que tenés que acertar es el destino, no el origen:

sudo dd if=pi_backup.img of=/dev/sdb bs=4M status=progress conv=fsync

O, si preferís no tocar una terminal para esta parte, Raspberry Pi Imager acepta un archivo .img local como imagen personalizada: abrí Imager, elegí Operating System -> Use custom, apuntalo a tu pi_backup.img, elegí la tarjeta SD nueva como destino, y escribí.

Comprobar que realmente funcionó

Arrancá la tarjeta nueva en la Pi y confirmá que el hostname, los servicios instalados y tus archivos están exactamente como estaban:

hostname
systemctl list-units --type=service --state=running

Si algo se ve raro, todavía tenés la tarjeta original intacta y el archivo .img para volver a intentarlo. Más detalle sobre imaging y restauración de tarjetas en la documentación oficial de primeros pasos de Raspberry Pi.

Dejar un comentario

Los comentarios anónimos se publican tras ser revisados.