You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

46 lines
1.5 KiB

#!/usr/bin/env bash
#Ruta de destino backup
#DEST=usuaro@host:/path
DEST=usuaro@host:/path
#Variables de entorno (LAS MISMAS INGRESADAS EN .env)
CONTAINER_NAME=mysql_db
MYSQL_DATABASE=mysql
MYSQL_ROOT_PASSWORD=mysql
SCRIPT_PATH=$(realpath $0)
WORKDIR=$(dirname ${SCRIPT_PATH})
DIR=$(pwd)
LOG_DIR=${WORKDIR}/backup.log
FECHA=`date +%Y%m%d`
echo [`date`] ========== Comenzando script Backup - MYSQL ========== >> $LOG_DIR
cd ${WORKDIR}
echo [`date`] ::Volcando DB a ${WORKDIR}/backups/${MYSQL_DATABASE}${FECHA}.sql >> $LOG_DIR
docker container exec -it ${CONTAINER_NAME} bash -c "mysqldump -p${MYSQL_ROOT_PASSWORD} ${MYSQL_DATABASE} > backups/${MYSQL_DATABASE}${FECHA}.sql"
echo [`date`] ___ OK >> $LOG_DIR
echo ------------------------------------ >> $LOG_DIR
echo [`date`] ::Comprimiendo ${WORKDIR}/backups/${MYSQL_DATABASE}${FECHA}.sql a ${WORKDIR}/backups/${MYSQL_DATABASE}${FECHA}.zip >> $LOG_DIR
cd backups
zip -r ${MYSQL_DATABASE}${FECHA}.zip ${MYSQL_DATABASE}${FECHA}.sql
cd ${WORKDIR}
echo [`date`] ___ OK >> $LOG_DIR
echo ------------------------------------ >> $LOG_DIR
echo [`date`] ::Copiando de ${WORKDIR}/backups/${MYSQL_DATABASE}${FECHA}.zip a ${DEST} >> $LOG_DIR
scp backups/${MYSQL_DATABASE}${FECHA}.zip ${DEST}
echo [`date`] ___ OK >> $LOG_DIR
echo ------------------------------------ >> $LOG_DIR
echo [`date`] ::Eliminando ${WORKDIR}/backups/${MYSQL_DATABASE}${FECHA}.* >> $LOG_DIR
rm backups/${MYSQL_DATABASE}${FECHA}.*
echo [`date`] ___ OK >> $LOG_DIR
echo ------------------------------------ >> $LOG_DIR
# Vuelvo al directorio actual
cd ${DIR}
exit 0