Script para hacer Backup en Linux


Hace tiempo quería publicar esto, pero por falta de tiempo no había podido. Bueno espero que les sirva cuando lo necesiten.

#!/bin/sh
# Ruta para el log de backup.
logfile="/root/scripts/logs/backup_db.log"
 
# Ruta donde se guarda el backup

backup_dir="/opt/BACKUP_DB/"

# Datos de autenticacion en la bd

username="usuario"

password="contraseña"

bd="nombre_DB"

host="nombre_host_o_IP"

# Variable para el nombre del archivo de backup

timeslot=`date +%Y_%m_%d-%H%M`

# Nombre backup
backup_name="$backup-db-$timeslot.sql"
 
echo "######################################################" >> $logfile

date >> $logfile

echo "Iniciando el backup..." >> $logfile

# Se ingresa en el directorio donde se hara el backup

cd $backup_dir

if [ $? -eq 0 ]; then

        echo "Se ha ingresado al directorio de backup." >> $logfile

else

        echo "No se ha podido ingresar al directorio de backup, validar el volumen." >> $logfile

        exit

fi

echo "Creando el mysqldump con nombre $backup_name..." >> $logfile

# Se corre mysqldump para sacar el backup en caliente y se comprime en la misma sentencia

mysqldump --user=$username --host=$host $bd --password=$password | gzip > $backup_dir$backup_name.gz

echo "Backup finalizado." >> $logfile

date >> $logfile

Bueno creo que está claro al leerlo pero voy a explicarlo de todas maneras:

1. Iniciamos creando un archivo de log para que nos diga si el backup fue hecho bien o no (variable logfile)

2. Definimos la variable backup_dir que es donde está el directorio que contiene el backup.

3. Como este script se va a correr automático cada X tiempo (en el Cron), debemos definir variables que contengan el nombre de usuario, password, nombre de la base de datos y el host donde alojamos dicha DB.

4. Definimos una variable llamada timeslot que tendrá la fecha en que se hizo el backup con el formato Año/Mes/Dia y la hora y minutos en que se hizo.

5. Definimos una variable llamada backup_name y le asignamos el valor que contienen las variables backup-db-inmlcf y timeslot y le ponemos la extensión .sql

6. Ingresamos al directorio del backup y verificamos si se ha ingresado bien o no.

7. Por último hacemos un mysqldump y lo comprimimos en la misma sentencia, escribimos en el log y damos por finalizado el backup.

Guardamos el archivo como .sh y lo adicionamos en el cron para que se ejecute automático los días que queramos. 

Saludos!!

0 Comments: