maison_alexandra/development/database/bin/dump_data.sh

53 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Configure mysql for further usage
credentialsFile="/opt/bin/mysql-credentials.cnf"
default_db_name="maison_alexandra_lv"
# Set passed arguments
for i in "$@"; do
case $i in
-db=*|--db_name=*) default_db_name="${i#*=}" ;;
*) echo "Unknown parameter passed: $i"; exit 1 ;;
esac
done
# Show progress bar
function ProgressBar {
# Process data
let _progress=(${1}*100/${2}*100)/100
let _done=(${_progress}*4)/10
let _left=40-$_done
# Build progressbar string lengths
_fill=$(printf "%${_done}s")
_empty=$(printf "%${_left}s")
printf "\rProgress : ${_fill// /█}${_empty// / } | ${_progress}%%"
if [ $_progress -eq 100 ]; then
echo -e
fi
}
# Create folders
if [ ! -d "/opt/data/$default_db_name" ]; then
mkdir -p "/opt/data/$default_db_name";
fi
# Setup progressbar
dumped_tables=0
total_tables="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse \
"SELECT count(*) AS TOTALNUMBEROFTABLES FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"$default_db_name"';")"
# Get all tables to dup
TABLE_NAMES="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse 'show tables;')"
# Dump each table
for TABLE_NAME in ${TABLE_NAMES[@]}; do
mysqldump --defaults-extra-file=$credentialsFile --no-create-info --tab="/opt/data/$default_db_name" $default_db_name $TABLE_NAME
let dumped_tables++
ProgressBar ${dumped_tables} ${total_tables}
done
# Delete empty files
find "/opt/data/$default_db_name" -maxdepth 1 -type f -empty -delete