• Noticias
  • Apps
    • iOS y Android
    • iOS
    • Android
  • Móviles
    • Móviles chinos
    • Apple
    • Samsung
    • Motorola
    • Sony
  • Fortnite
  • Juegos
  • WhatsApp
  • Descargar
  • Contacto
Facebook Twitter Instagram
Destacado
  • Ibai entrevista a Dan Clancy, el CEO de Twitch: «¿Estarás en la Velada 4?»
  • WhatsApp: Cómo crear un canal de WhatsApp para compartir contenidos y novedades
  • Cómo usar la IA que lo está petando en Twitter traduciendo voces al inglés
  • ONE PIECE confirma segunda temporada en Netflix: «Necesitarán un doctor a bordo»
  • Ibai reacciona al iPhone 15: “Es lo mismo, es igual, ¿no?”
  • Outsourcing en Marketing: Potencia tu Presencia en el Mercado Digital
  • Arenas deportivas: crear comunidades e impulsar las economías locales
  • One Piece: Dónde ver el anime y leer el manga en España
ActualApp
  • Noticias
  • Apps
    • iOS y Android
    • iOS
    • Android
  • Móviles
    • Móviles chinos
    • Apple
    • Samsung
    • Motorola
    • Sony
  • Fortnite
  • Juegos
  • WhatsApp
  • Descargar
  • Contacto
ActualApp
Estás en:Home»Tutoriales»Cómo programar un backup automático de tu Raspberry Pi sin apagarla ni quitar la microSD
Tutoriales

Cómo programar un backup automático de tu Raspberry Pi sin apagarla ni quitar la microSD

De Alberto Guerrero27 abril, 2021Updated:17 mayo, 202112 Minutos de lectura
Ten siempre un backup (copia de seguridad) actualizado de tu Raspberry Pi con Raspbian en formato imagen comprimida y guárdala en un disco duro externo.
raspberry pi

Las tarjetas microSD suelen ser las primeras en caer debido a su delicadeza; sobre todo si las tienes enchufadas en un dispositivo que está funcionando constantemente. Es el caso de las Raspberry Pi, de la cual puede que quieras hacer un backup de su sistema operativo por si le llega el fatal día y no tienes ganas de volver a empezar de cero configurando todo en una nueva microSD.

Además lo vamos a hacer sin tener que desenchufar la Pi de la corriente, ni sacar la tarjeta microSD en ningún momento. Esto va bien si tienes un servidor que no puedes apagar, por ejemplo. Así, obtendremos un archivo con el cual clonar la imagen de la Raspberry Pi.

Para que quede claro lo que vamos a abordar en esta entrada, esto es todo lo que queremos conseguir:

  1. Un backup del sistema de la Raspberry Pi (Raspbian, en este caso).
  2. Hacerlo con la Raspberry Pi funcionando, es decir, SIN APAGARLA ni quitando su microSD. A esto se le llama hot backup.
  3. Programar dicho backup para que se ejecute automáticamente cada semana a altas horas de la madrugada (o cuando queramos).
  4. Obtener el backup en un fichero .img, pero comprimido en un .gz para que ocupe menos y para poder restaurarlo incluso desde Windows con el programa Raspberry Pi Imager, balenaEtcher o similar.
  5. Enviar el backup automática y directamente a un disco duro externo o pen drive que tengas conectado a la Raspberry Pi, o incluso por la red.
  6. Eliminar automáticamente los backups antiguos y mantener sólo los 3 más recientes.
  7. Hacerlo todo desde PuTTY (desde Windows) o desde la terminal de Raspbian.

Aunque parece mucha cosa, realmente solo necesitamos un par de líneas de código y poco más. Realmente lo que más tiempo me ha llevado ha sido encontrar los comandos que me han servido para este propósito (tengamos en cuenta que no soy ningún profesional de esto).

Hazte un backup cada semana (o cuando quieras) de tu Raspberry Pi para clonarla en un futuro y elimina las copias de seguridad antiguas automáticamente

Primero: Instalar cron y pv

Abre la terminal, ya sea desde la propia Raspbian o desde PuTTY o desde donde te suelas conectar y busca actualizaciones de tu sistema introduciendo:

sudo apt-get update
sudo apt-get upgrade

Con todo actualizado, vamos a descargar crontab (la función que nos permite programar tareas) en el caso de no tenerlo ya de serie:

sudo apt install cron

instalar cron en raspbian

Con ello ya instalado, debemos habilitar que pueda ejecutarse en segundo plano usando el comando:

sudo systemctl enable cron

activar cron en segundo plano

Aprovechamos y también instalamos pv, una función que crea una especie de barra de progreso y de tiempo transcurrido directamente en la terminal. Nos servirá para saber cómo va nuestro backup cuando se esté realizando la copia de seguridad de la Raspberry Pi.

sudo apt-get install pv

instalar pv en raspbian

También debemos saber la ruta de origen de la microSD en el que está instalado el sistema operativo; introducimos este comando:

lsblk -fm

ver particiones raspbian

En mi caso es mmcblk0. Lo sé porque dentro de este directorio está la partición boot, que es la de arranque, y rootfs que alberga el resto (y porque coincide con el tamaño de mi microSD de 32GB, aunque ponga 29GB, ya sabemos que las unidades de almacenamiento suelen venir con menos espacio del prometido). El término mmcblk0 lo tendré que tener a mano porque luego lo voy a necesitar. ¡Haz lo mismo con el tuyo!

Ahora ya lo tenemos todo para ponernos manos a la obra.

Segundo: Creando el script que nos hará la copia de seguridad

Como vamos a programar que cada día/semana/mes se haga un backup, la unidad acabará acumulando una cantidad de copias de seguridad, ergo, gigas, que no nos interesa. Así pues, también vamos a establecer que sólo se mantengan las 3 más recientes.

Para ello vamos a crear un script donde recopilaremos ambas funciones (copia de seguridad + limpieza de las antiguas), que será el que luego ejecutará crontab cada X tiempo.

Entonces, vamos a un directorio donde crearemos y guardaremos el script; en nuestro caso, en la carpeta Documents mismamente. La ruta completa de la carpeta es /home/pi/Documents, pero precisamente al estar dentro de /home puedes llegar hasta Documents abreviando y poniendo directamente este comando:

cd Documents

cd en raspbian

Estando dentro de Documents vamos a crear un documento vacío que se convertirá en nuestro script:

sudo nano backup.sh

nano en raspbian

editor de textos nano en raspbian

«nano» es el procesador de textos, como si fuese el bloc de notas de Windows, y «backup.sh» el nombre del documento. Puedes ponerle el que quieras mientras termine en .sh. Al enviar este comando se abrirá el mencionado procesador de textos donde incluiremos el código del script que vamos a revisar con atención aquí debajo.

Repito: antes de copiar y pegar a lo loco lo siguiente, vamos a echarle un vistazo primero para que te lo puedas personalizar:

#!/bin/bash

echo «Comenzando copia de seguridad.»

sudo dd if=/carpeta/de/entrada bs=1M | pv | gzip – | dd of=/carpeta/que/almacenará/tu/copia/$(date +%Y%m%d\_%H%M%S)\_pi_clone.gz

echo «Copia de seguridad realizada.»

El script tiene que comenzar con la línea #!/bin/bash para que Raspbian entienda que se trata de un script. Es obligatorio ponerla al principio de todo para que el invento funcione.

La segunda línea, que empieza por echo es simplemente para que muestre por pantalla el mensaje «Comenzando copia de seguridad».

La tercera línea (¡es una sola! No está dividida en dos, pero es muy larga) es la que nos hará el backup. Vamos a diseccionar qué hace cada cosa:

  • sudo: probablemente ya lo sabrás, te sonará o ya la hayas usado: es para darle permiso de administrador a la operación.
  • dd: hace la copia de seguridad.
  • if=: Aquí va la ruta de origen de la copia, es decir, tu microSD. Es lo que hemos anotado antes, en mi caso, mmcblk0.
  • pv: Lo hemos instalado antes y es para que el terminal muestre una barra de progreso.
  • gzip – : para que a la vez que hace la copia, lo comprima en formato .gz para que ocupe menos.
  • dd of=: Si if era el origen, of es dónde irá a parar la copia. Yo la he puesto en una carpeta del disco duro Toshiba de 3TB que tengo conectado por USB a la Raspberry Pi (y al cual accedo desde Windows cómodamente) montado en la ruta media/TOSHIBA3TB/Backup/.
  • $(date +%Y%m%d\_%H%M%S)\_pi_clone.gz: Es el nombre que tendrá el archivo resultante (la fecha y hora en la que se hizo el backup).

La cuarta línea vuelve a ser un echo que nos anunciará «Copia de seguridad realizada.» si el anterior comando ha funcionado.

Así pues, en mi caso la historia queda así:

#!/bin/bash

echo «Comenzando copia de seguridad.»

sudo dd if=/dev/mmcblk0 bs=1M | pv | gzip – | dd of=/media/TOSHIBA3TB/Backup/$(date +%Y%m%d\_%H%M%S)\_pi_clone.gz

echo «Copia de seguridad realizada.»

script para backup en raspbian

Ahora queda guardarlo pulsando Ctrl+O en el teclado. Nos preguntará el nombre del archivo por el cual lo queremos guardar; en principio ya estará escrito como backup.sh (o el que le hayas puesto antes) así que sólo tocará pulsar Enter.

guardar nano raspbian

Entonces, para salir del procesador de textos nano tecleamos la combinación Ctrl+X y volveremos a la terminal.

Sobre todo, que no se nos olvide hacerlo ejecutable para que luego cron pueda arrancarlo automáticamente:

sudo chmod +x /home/pi/Documents/backup.sh

Esto quiere decir que ya tienes un script que te hace una copia de seguridad cuando lo ejecutas. Todavía queda programarlo para que arranque automáticamente y añadirle lo de que elimine los backups antiguos, pero si quieres puedes probar si funciona usando el comando:

./backup.sh

ejecutar script en raspbian

Recuerda que para que se inicie tienes que estar en la carpeta Documents (o en la que hayas elegido guardar el archivo). En principio, al salir de nano deberías estar en Documents. Sino, ya sabes: cd Documents o cd /home/pi/Documents y entonces, ./backup.sh.

backup en raspberry pi desde putty
Así se ve la terminal cuando está haciendo el backup, en parte gracias al comando pv.

Ten en cuenta que la copia de seguridad suele tardar lo suyo en completarse. En mi caso, unas 3 horas para una microSD de 32GB (aunque no toda está ocupada).

Ya de paso: que se borren los backup de la Raspberry Pi antiguos

Si el backup de tu Raspberry Pi ha funcionado, lo deberías tener en un fichero comprimido dentro de la carpeta de salida que has establecido en el script (lo que va después de dd of=).

En caso de estar todo bien, vamos a añadirle otro par de líneas a nuestro script para que elimine las copias más viejas. Nos colocamos en la carpeta donde lo tengamos (Documents, en mi caso):

cd /home/pi/Documents

dirigrse a carpeta documents raspbian

Y acto seguido:

sudo nano backup.sh

nano en raspberry pi

Esto abrirá de nuevo el editor de textos nano con el flamante script que hemos escrito antes.

script para backup en raspbian

Nos vamos hasta abajo donde nos prepararemos para añadir lo siguiente (ojo, todavía no copies nada, vamos a echarle un vistazo primero).

cd /carpeta/que/almacenará/tu/copia && ls -t1 /carpeta/que/almacenará/tu/copia | tail -n +4 | xargs rm -r
cd

echo «Antiguas copias de seguridad eliminadas.»

Esta primera línea (que sería la quinta dentro del script) vuelve a ser una única línea bastante largita y se compone de estos comandos, los cuales tendrás que personalizar según tus rutas:

  • cd: seguido va la carpeta en la que guardas tu copia de seguridad. La mía, como indicaba antes, es media/TOSHIBA3TB/Backup.
  • && ls -t1: Esto va a listar los archivos que hay dentro de la carpeta. Después de este comando hay que escribir nuevamente la ruta de la carpeta de las copias de seguridad, es decir, la misma de antes.
  • | tail -n +4 | xargs rm -r: Comando que solo mantendrá los 3 archivos más recientes según su fecha y se cargará el resto.

La siguiente línea (sexta) es un simple cd que nos devolverá a la raíz de la Raspberry Pi (básicamente para que no se quede dentro de Documents al terminar la limpieza de backups).

La última línea echo nos indicará por pantalla que las copias de seguridad antiguas se han eliminado correctamente.

Por tanto, aplicado a mi caso, este nuevo bloque de código me quedaría así:

cd /media/TOSHIBA3TB/Backup && ls -t1 /media/TOSHIBA3TB/Backup | tail -n +4 | xargs rm -r
cd

echo «Antiguas copias de seguridad eliminadas.»

Que incorporado a lo que ya tenía en el script, finalmente estaría así:

#!/bin/bash

echo «Comenzando copia de seguridad.»

sudo dd if=/dev/mmcblk0 bs=1M | pv | gzip – | dd of=/media/TOSHIBA3TB/Backup/$(date +%Y%m%d\_%H%M%S)\_pi_clone.gz

echo «Copia de seguridad realizada.»

cd /media/TOSHIBA3TB/Backup && ls -t1 /media/TOSHIBA3TB/Backup | tail -n +4 | xargs rm -r
cd

echo «Antiguas copias de seguridad eliminadas.»

script backup raspbian y borrar backups antiguos

Para guardarlo hacemos Ctrl+O, Enter, y luego Ctrl+X para salir.

guardar script nano

Nuevamente, antes de ponernos a programarlo para que se lance automáticamente, puedes probar si funciona correctamente ejecutándolo manualmente. O si no quieres esperar a que haga otra copia de seguridad, puedes introducir sólo el código nuevo (es decir, la quinta línea) en la terminal para ver si hace la limpieza o no (puedes poner varios archivos aleatorios de prueba en la carpeta en la que se guardarán tus backups, como fotos o lo que sea, y ver qué pasa).

Programar el script para que se ejecute automáticamente una vez a la semana

Finalmente, si el script funciona bien, ya sólo queda programarlo para que arranque automáticamente cuando se lo digamos. Esto lo conseguimos con crontab, el cual hemos instalado al principio de este tutorial. Para ponernos en marcha tenemos que editar su archivo donde incluiremos la programación del script.

Si estamos en alguna carpeta, nos salimos a la raíz de la Raspberry Pi usando el comando:

cd

cd en terminal raspbian

Ahora introducimos el siguiente comando en la terminal:

crontab -e

crontab -e en raspbian

Esto abrirá el editor propio de crontab donde se introducen todas las órdenes a programar.

crontab en rasbian

El archivo tiene un montón de texto comentado (empieza por #) que nos cuenta el funcionamiento de crontab; nosotros nos vamos hasta abajo de todo para añadir una nueva línea.

final crontab raspbian

Antes de todo, vamos a ver el código para adaptarlo a tu caso:

* * * * * /ubicación/de/tu/script.sh

Crontab usa un sistema de 5 asteriscos donde tenemos que configurar la fecha del momento en el que queremos que se lance el script. Así pues, cada asterisco significa lo siguiente (de izquierda a derecha):

1r asterisco – Minutos: de 0 a 59.
2º asterisco – Horas: de 0 a 23.
3r asterisco – Día del mes: de 1 a 31.
4r asterisco – Mes: de 1 a 12.
5º asterisco – Día de la semana: de 0 (domingo) a 6 (sábado)

Seguidamente, hay que escribir la ubicación del script que queremos ejecutar.

En mi caso, quiero que el script que hemos creado antes se ejecute a las 4:10 de la mañana de cada lunes (es decir, la noche del domingo al lunes). Por lo tanto, mi crontab queda así:

10 4 * * 1 /home/pi/Documents/backup.sh

crontab -e backup

He elegido esta hora porque es cuando la Pi está más desocupada y puede cargar con el backup sin problema.

Con el crontab configurado a tu manera, ya sólo te queda guardarlo pulsando Ctrl+X, introduciendo S para confirmar el guardado del archivo.

guardar crontab -e backup

Y pulsar Enter para salir.

cerrar crontab -e backup

De este modo, llegado cada lunes a las 4:10 de la madrugada, la Raspberry Pi comenzará a hacer su backup. En la cuarta semana consecutiva, borrará el primer backup que hizo y sólo dejará los tres últimos. Y así cada semana.

carpeta backups raspberry pi
Si nos fijamos en los nombres de los archivos, veremos en qué fecha y hora se comenzó a crear cada backup (el primero fue una prueba fuera de horario, pero los dos últimos se han creado automáticamente).

Esto ha sido todo por nuestra parte. Si te ha funcionado correctamente, chupito cada vez que he puesto «en mi caso» a lo largo del texto 🙂.

Compartir. Facebook Twitter Pinterest LinkedIn Tumblr Email
Alberto Guerrero
Alberto Guerrero
  • Website
  • Facebook
  • Twitter
  • Instagram
  • LinkedIn

Últimamente, la gente escribe «enserio» en lugar de «en serio».

Posts relacionados

Las últimas técnicas de hacking en WhatsApp y cómo evitar convertirte en una víctima

Cuáles son los 5 mejores modelos de laptops HP para comprar en 2023

Consejos y estrategias para apostar en los E-Sports

3 comentarios

  1. Franplex on 19 julio, 2021 4:28 pm

    Buenos días, si quisiera hacer el camino inverso, y restaurar la imagen completa en una microSD, ¿cómo tendría que proceder?
    Muchísimas gracias!

    Reply
    • Alberto Guerrero
      Alberto Guerrero on 19 julio, 2021 4:44 pm

      Hola Franplex, la puedes abrir con Raspberry Pi Imager mismamente. En «Choose OS» eliges «Use custom» y buscas tu backup, luego eliges tu microSD y le das a «escribir». ¡Un saludo!

      Reply
  2. Juanjo on 12 febrero, 2022 10:41 am

    Hola, esta el articulo genial, pero cuando lo ejecutas pide password de root (en el sudo) y eso como se pone en el bash?

    Reply

Deja un comentario Cancel Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Buscar
Noticias Recientes
21 septiembre, 2023

Ibai entrevista a Dan Clancy, el CEO de Twitch: «¿Estarás en la Velada 4?»

21 septiembre, 2023

WhatsApp: Cómo crear un canal de WhatsApp para compartir contenidos y novedades

15 septiembre, 2023

Cómo usar la IA que lo está petando en Twitter traduciendo voces al inglés

Últimas entradas
  • Ibai entrevista a Dan Clancy, el CEO de Twitch: «¿Estarás en la Velada 4?»
  • WhatsApp: Cómo crear un canal de WhatsApp para compartir contenidos y novedades
  • Cómo usar la IA que lo está petando en Twitter traduciendo voces al inglés
  • ONE PIECE confirma segunda temporada en Netflix: «Necesitarán un doctor a bordo»
  • Ibai reacciona al iPhone 15: “Es lo mismo, es igual, ¿no?”
  • Outsourcing en Marketing: Potencia tu Presencia en el Mercado Digital
Categorías
  • Apps
  • Gadgets
  • Móviles
  • Noticias
  • Rankings
  • Smartwatch
  • Tutoriales
Otros Posts
Instalar WhatsApp
Descargar Facebook
Copyright 2020 ActualApp - Política de cookies | Aviso legal | Contacto

Type above and press Enter to search. Press Esc to cancel.

Este sitio web utiliza cookies para mejorar la experiencia del usuario. Si continua navegando, consideramos que acepta el uso de cookies.Aceptar Leer más
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR