Raspberry Pi - Backup remoto

Como crear una copia de seguridad sin apagar el sistema

Roberto Lodeiro

Si odias apagar tu Raspberry PI para hacer una copia de seguridad del sistema, continua leyendo.

Ya te habrá quedado claro que soy un Full Lover de la Raspberry PI, la uso como servidor principal y es casi mas importante que yo en casa, pero el ritual de hacer una copia de seguridad me cansaba. Tenia que apagarla, desconectar los discos y la microSD, conectar todo a mi pc y hacer el backup. Después había que volver a conectar todo, encenderla y comprobar que todos los servicios se iniciaban de forma correcta.

Esos malos tiempos se han acabado, ¡te explico como!

ACTUALIZACIÓN: Si queremos hacer backup remoto en un equipo con Debian, se presentará un error relacionado con sudo. Agrego un último apartado para solucionarlo.


Requisitos

Basta con tener habilitado el acceso remoto con SSH en nuestra Raspberry PI. En caso contrario, podemos crear un archivo con nombre ssh en la particion /boot de la misma y reiniciar. Este proceso se puede hacer tando desde sistemas Linux como macOS.

Este ejemplo es con una Raspberry que solo tiene microSD como disco del sistema, pero en el caso de tener también un disco USB como explique en esta entrada, solo hemos de hacer dos copias, una de la microSD y otra del disco USB siguiendo estos mismos pasos.

Localizar el nombre del disco

  • Entrar a la Raspberry PI por ssh

    $ ssh pi@xxx.xxx.x.xxx
    
  • Ver el nombre del disco

    $ lsblk -p
    

Saldrá algo como lo siguiente: txt NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT /dev/mmcblk0 179:0 0 14,9G 0 disk ├─/dev/mmcblk0p1 179:1 0 43,2M 0 part /boot └─/dev/mmcblk0p2 179:2 0 14,8G 0 part / Copiar el nombre, en este caso es /dev/mmcblk0

  • Cerrar la conexion ssh
    $ exit
    

Iniciar el backup

  • Ejecutar lo siguiente

    $ ssh pi@xxx.xxx.x.xxx "sudo dd if=/dev/mmcblk0 bs=1M | gzip -" | dd of=$HOME/backupPi.gz status=progress
    

    Nos pedirá la contraseña remota y comenzará el backup. Previamente hemos de modificar algunos parámetros.

Parámetros a modificar

* pi -> Nombre de nuestro usuario en la Raspberry PI
* xxx.xxx.x.xxx -> Direccion IP a la que nos queremos conectar
* if=/dev/mmcblk0 -> Nombre del disco
* of=$HOME/backupPi.gz -> "Directorio/nombreArchivo.gz" donde se guardara el backup

De esta forma, conectaremos con nuestra Rapberry PI por ssh, haremos una copia con dd ya comprimida, y la guardaremos en el directorio local indicado.

Gracias a status=progress tendremos información del progreso de la copia hasta que esta finalice.

Restaurar el backup

Si queremos restaurar la copia, solo tenemos que conectar el disco en nuestro pc y hacer lo siguiente:

  • Comprobar el nombre del disco de destino

    $ lsblk -p
    
  • Situados en el directorio donde está la copia:

    $ gunzip -c backupPi.gz | dd of=/dev/mmcblk0
    

    Cambiando el nombre de la copia y el del disco de destino por los adecuados.

Backup remoto en Debian

Si intentamos hacer este procedimiento en un equipo con Debian, se presentará el error sudo: no tty present and no askpass program specified. Esto se debe a que, mientras que por defecto Raspberry Pi OS no nos pide password para ejecutar comandos con sudo, Debian si lo pide.

Para solucionarlo, realizamos lo siguiente:

  • Editar el archivo de configuración:
sudo visudo
  • Agregamos una línea al final como la siguiente, indicando el usuario con el que hacemos login en el equipo con Debian:

    usuario ALL=(ALL) NOPASSWD:ALL
    

    Guardamos y ya podremos ejecutar el comando de copia remota, este se ejecutará sin problema ya que ahora sudo no solicita password.

Si una vez finalizada la copia queremos dejar el sistema como estaba, cosa que recomiendo por seguridad, tan solo tenemos que comentar la linea que agregamos anteriormente y el sistema volverá a pedir password para ejecutar sudo con nuestro usuario.


Espero que sea útil, ¡gracias por leerme!