Backup de Sistema en Debian (y 2)

Bueno, vamos a prepararlo todo. En la RaspberryPi B (la que tiene el HDD conectado por USB) voy a crear un directorio para que desde esta RaspberryPi (A) se envíen el backup y mantengamos todos los datos en el mismo HDD. Creo el directorio /media/multi/varios/imagenesSO/BACKUPS/DSLab en la máquina RaspberryPi B y la monto en la RaspberryPi A en el directorio /home/pi/DSLab:

sshfs 192.168.1.250:/media/multi/varios/imagenesSO/BACKUPS/DSLab /home/pi/DSLab

backup00

Ahora os pongo el código del script:

#!/bin/bash
# Configuramos los directorios donde alojaremos la copia de datos
SUBDIR=DSLab
DIR=/home/pi/$SUBDIR
echo “Comenzamos el proceso de backup de RaspberryPi!”

# Primero chequea si el paquete pv esta instalado, sino, lo instala.
PACKAGESTATUS=`dpkg -s pv | grep Status`;

if [[ $PACKAGESTATUS == S* ]]
then
echo “Paquete ‘pv’ está instalado.”
else
echo “Paquete ‘pv’ NO está instalado.”
echo “Instalando paquete ‘pv’. Espera, por favor…”
apt-get -y install pv
fi

# Comprueba si el directorio de la copia existe o no.
if [ ! -d “$DIR” ];
then
echo “Directorio de Backup $DIR no existe, lo creamos!”
mkdir $DIR
fi

# Crea un fichero con la fecha para nuestro backup actual (sin la extensión .img)
OFILE=”$DIR/backup_$(date +%d%m%Y_%H%M%S)”

# Crea el nombre final del fichero
OFILEFINAL=$OFILE.img

# Sincronizamos los discos…
sync; sync

# Paramos algunos servicios antes de comenzar el proceso de backup
echo “Parando apache2, mysql y cron antes de backup.”
service apache2 stop
#service mysql stop
service cron stop

# COmenzamos el backup. Tarda una hora en una SD de 8Gb a HDD
echo “Comienza el backup de SD a HDD.”
echo “Tardará en función del tamaño de la SD y la velocidad de lectura de la misma. Espera, por favor…”
SDSIZE=`blockdev –getsize64 /dev/mmcblk0`;
pv -tpreb /dev/mmcblk0 -s $SDSIZE | dd of=$OFILE bs=1M conv=sync,noerror iflag=fullblock

# Esperamos que termina para comprobar el resultado.
RESULT=$?

# Arrancamos los servicios que paramos antes del backup
echo “Arrancamos los servicios que se pararon antes de backup.”
service apache2 start
service mysql start
service cron start
# Si el backup termina correctamente, borramos anteriores y salimos
if [ $RESULT = 0 ];
then
echo “Backup terminado con éxito. Borramos los anteriores.”
rm -f $DIR/backup_*.tar.gz
mv $OFILE $OFILEFINAL
echo “Comprimiendo BACKUP. Espera, por favor…”
tar zcf $OFILEFINAL.tar.gz $OFILEFINAL
rm -rf $OFILEFINAL
echo “BACKUP de RaspberryPI completo! Fichero: $OFILEFINAL.tar.gz”
./script.sh “Backup terminado correctamente.”
exit 0
# Borra el fichero de backup que no ha terminado correctamente
else
echo “Fallo en el Backup! Los ficheros antiguos no se tocan.”
echo “Por favor, verifica espacio en HDD.”
rm -f $OFILE
echo “BACKUP de RaspberryPI falló!”
./script.sh “Backup fallado.”
exit 1
fi

Con este script podemos programar el backup para que se haga a una determinada hora o lanzarlo nosotros cuando queramos. Si os fijais bien, hay una llamada a un script.sh tanto si se hace bien como si no. Ese script es el que vamos a utilizar para que Telegram nos envíe el mensaje, indicando si ha terminado bien o no.

El código es muy simple, pero paso indispensable y necesario es tener instalado Telegram en la Raspberry. El segundo requisito es saber nuestro número de usuario en Telegram. Una vez cumplidos los dos requisitos, creamos el script y copiamos el texto:

#!/bin/bash

# Cargamos la variable $USUARIO con el usuario al que enviamos el mensaje.
USUARIO=”user#XXXXXXXX”

# Cadena que envia el mensaje con las variables $USUARIO y la entrada desde teclado.
cd /home/pi/tg/
./telegram -k tg.pub -W <

En caso de que hayas seguido el tutorial de instalación de Telegram en Raspbian al pie de la letra, solo tendrás que modificar el usuario. En caso de que hayas cambiado el directorio también deberás modificarlo aquí.

Y con este script de Telegram podrás saber qué es lo que está haciendo y pasando en tu Raspberry.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Demuestra que eres humano...!!! * Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.