Last active
April 23, 2018 11:26
-
-
Save paseto/c46842ded58300313350ae3450fdf26f to your computer and use it in GitHub Desktop.
Backup databases bash script with email megaupload option
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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