Last active
May 31, 2021 15:06
-
-
Save rojenzaman/bd4bcff8e23039a691d7005a2038e77f to your computer and use it in GitHub Desktop.
automysqlbackup DOCKER
This file contains 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 | |
# CRONTAB: | |
# @daily /path/to/automysqlbackup.sh hour | |
# @daily /path/to/automysqlbackup.sh day | |
# @weekly /path/to/automysqlbackup.sh week | |
# @monthly /path/to/automysqlbackup.sh month | |
# MAIL: | |
# apt install mailutils postfix | |
[[ -t 1 ]] || set -x | |
SCRIPT=$(realpath $0) | |
cd "$(dirname "${BASH_SOURCE[0]}")" | |
. ENV.conf | |
hour() { date +hour.%d-%m-%Y_%Hh%Mm%Ss.%A ; } | |
day() { date +day.%d-%m-%Y_%Hh%Mm.%A ; } | |
week() { date +week.%U.%d-%m-%Y_%Hh%Mm ; } | |
month() { date +month.%d-%m-%Y_%Hh%Mm.%B ; } | |
function exec_hour() { | |
yesterday=$(date --date="yesterday" +%d-%m-%Y) | |
ls hour*$yesterday* &>/dev/null && rm hour*$yesterday* &> /dev/null | |
return 0 | |
} | |
function exec_day() { return 0 ; } | |
function exec_week() { return 0 ; } | |
function exec_month() { return 0 ; } | |
function cronie() { | |
echo -e "#!/bin/bash\n$SCRIPT hour" > /etc/cron.hourly/automysqlbackup 2>/dev/null && chmod 750 /etc/cron.hourly/automysqlbackup &> /dev/null | |
echo -e "#!/bin/bash\n$SCRIPT day" > /etc/cron.daily/automysqlbackup 2>/dev/null && chmod 750 /etc/cron.daily/automysqlbackup &> /dev/null | |
echo -e "#!/bin/bash\n$SCRIPT week" > /etc/cron.weekly/automysqlbackup 2>/dev/null && chmod 750 /etc/cron.weekly/automysqlbackup &> /dev/null | |
echo -e "#!/bin/bash\n$SCRIPT month" > /etc/cron.monthly/automysqlbackup 2>/dev/null && chmod 750 /etc/cron.monthly/automysqlbackup &> /dev/null | |
} | |
function main() { | |
x=0 | |
COMMAND="$1" | |
function mysqldump() { | |
cd $i | |
echo -e "\e[91m$x:\e[0m\e[92m`pwd`\e[0m" | |
STAMP=$($COMMAND) | |
exec_$COMMAND | |
docker-compose exec -T db mysqldump --user="$DATABASE_USER" --password="$PASS" "$DATABASE_NAME" --result-file="/mysql-backup/$STAMP.sql" --no-tablespaces 2> /dev/null | |
gzip -f9 mysql-backup/$STAMP.sql 2> /dev/null | |
echo "" | |
} | |
for i in */; do | |
x=$((x+1)) | |
( mysqldump $1 ) | |
done | |
} | |
if [ "$#" -lt 1 ]; then | |
echo "./`basename $0` hour | day | week | month | crontab"; | |
exit 1; | |
fi | |
case $1 in | |
hour|--hour) main hour ;; | |
day|--day) main day ;; | |
week|--week) main week ;; | |
month|--month) main month ;; | |
crontab|--crontab) cronie ;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment