Skip to content

Instantly share code, notes, and snippets.

@paseto
Last active April 23, 2018 11:26
Show Gist options
  • Save paseto/c46842ded58300313350ae3450fdf26f to your computer and use it in GitHub Desktop.
Save paseto/c46842ded58300313350ae3450fdf26f to your computer and use it in GitHub Desktop.
Backup databases bash script with email megaupload option
#!/bin/bash
#
# File: fileuploader_mega.sh
#
# Author: Giovani Paseto
#
# Created on Apr 22, 2016, 08:20:00
#
# Require: bzip
# https://megatools.megous.com/
# http://blog.hbautista.com/linux/megatools-en-debian-jessie/
#
# apt-get install build-essential bzip libglib2.0-dev libssl-dev libcurl4-openssl-dev asciidoc
#
# Create .megarc config file /home/$USER/.megarc
#
# Config file
VERSION="0.1"
CONFIG_FILE=~/.uploader_config
CLIENT="GCOMP"
echo "Init setup"
if [[ -e $CONFIG_FILE ]]; then
source "$CONFIG_FILE" 2>/dev/null || {
sed -i'' 's/:/=/' "$CONFIG_FILE" && source "$CONFIG_FILE" 2>/dev/null
}
if [[ $FOLDER_NAME == "" || $MYSQL_U == "" || $MYSQL_P == "" || $MYSQL_DB == "" ]]; then
echo -e "Ops, there's something wrong with you config file, please run again."
unlink $CONFIG_FILE
exit 1
fi
else
while (true); do
echo -ne "\n ----- Uploader v$VERSION - [SETUP] ----- \n"
echo -ne "\n Please follow instructions above:\n"
echo -n " Please choose a folder name to store zipped db [UPLOADER]:"
read FOLDER_NAME
if [[ $FOLDER_NAME == "" ]]; then
FOLDER_NAME="UPLOADER"
fi
echo -n " MySQL username:"
read MYSQL_U
echo -n " MySQL password:"
read MYSQL_P
echo -n " MySQL Database names (,) comma separated:"
read MYSQL_DB
# Save config file
echo -ne "OK\n"
echo "FOLDER_NAME=$FOLDER_NAME" > "$CONFIG_FILE"
echo "MYSQL_U=$MYSQL_U" >> "$CONFIG_FILE"
echo "MYSQL_P=$MYSQL_P" >> "$CONFIG_FILE"
echo "MYSQL_DB=$MYSQL_DB" >> "$CONFIG_FILE"
echo -ne "\n Done!\n"
break
done;
fi
# Params
DATE=$(date +"%d/%m/%Y")
TIME=$(date +"%H:%M")
DATA=$(date +"%Y%m%d%H%M")
#Create dirs
megamkdir /Root/"${CLIENT}"/
megamkdir /Root/"${CLIENT}"/$(date +"%Y")/
megamkdir /Root/"${CLIENT}"/$(date +"%Y")/$(date +"%m")/
megamkdir /Root/"${CLIENT}"/$(date +"%Y")/$(date +"%m")/
megamkdir /Root/"${CLIENT}"/$(date +"%Y")/$(date +"%m")/$(date +"%d_%H%M")/
FINALDIR=/Root/"${CLIENT}"/$(date +"%Y")/$(date +"%m")/$(date +"%d_%H%M")/
#Create Database backup
DATABASES=$MYSQL_DB;
array=$(echo $DATABASES | tr "," "\n");
for x in $array
do
CDB="$(echo -e "${x}" | tr -d '[[:space:]]')"
DATABASE_FOLDER="${FOLDER_NAME}/${CDB}/"
COMPRENSSED_FILE="${DATE}${TIME}"
DB_FILE="${FOLDER_NAME}/${CDB}backup.tar"
echo -e "-------------------------------------"
echo -e "Generating database backup [$CDB]... \c"
#Single file
#mysqldump --opt --single-transaction --quick --password=$MYSQL_P -u $MYSQL_U $CDB > "${DB_FILE}"
mysqldump --opt --single-transaction --no-data --quick --password=$MYSQL_P -u $MYSQL_U $CDB > structure.sql
mysqldump --opt --single-transaction --no-create-info --skip-triggers --ignore-table=$CDB.tb_log --ignore-table=$CDB.tb_historico --quick --password=$MYSQL_P -u $MYSQL_U $CDB > data.sql
echo "done!"
echo -e "Tar fles..."
tar -cf "$DB_FILE" data.sql structure.sql
echo "done!"
echo -e "BZIP2... $DB_FILE"
bzip2 "$DB_FILE"
echo -e "Uploading... \c"
megaput --path $FINALDIR "${DB_FILE}.bz2"
echo "done!"
if [ -f "${DB_FILE}.bz2" ]
then
rm "${DB_FILE}.bz2"
fi
done
echo "Done " $(date +"%d/%m/%Y") $(date +"%H:%M")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment