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
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.
