69 lines
2.2 KiB
Bash
Executable File
69 lines
2.2 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/structure/$default_db_name/tables" ]; then
|
|
mkdir -p "/opt/structure/$default_db_name/tables";
|
|
fi
|
|
if [ ! -d "/opt/structure/$default_db_name/views" ]; then
|
|
mkdir -p "/opt/structure/$default_db_name/views";
|
|
fi
|
|
if [ ! -d "/opt/structure/$default_db_name/procedures" ]; then
|
|
mkdir -p "/opt/structure/$default_db_name/procedures";
|
|
fi
|
|
|
|
# Setup progressbar
|
|
dumped_tables=0
|
|
total_tables="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse \
|
|
"SELECT count(*) AS TOTAL_COUNT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$default_db_name';")"
|
|
|
|
# Get all tables to dump
|
|
TABLE_NAMES="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse 'show tables;')"
|
|
|
|
# Dump each procedure
|
|
mysqldump --defaults-extra-file=$credentialsFile --routines --no-create-info --no-data --no-create-db --skip-opt $default_db_name > "/opt/structure/$default_db_name/procedures/routines.sql"
|
|
|
|
# Dump each table
|
|
for TABLE_NAME in ${TABLE_NAMES[@]}; do
|
|
mysqldump --defaults-extra-file=$credentialsFile --no-data --tab="/opt/structure/$default_db_name" $default_db_name $TABLE_NAME
|
|
let dumped_tables++
|
|
ProgressBar ${dumped_tables} ${total_tables}
|
|
|
|
file="/opt/structure/$default_db_name/$TABLE_NAME.sql"
|
|
# Separate views from tables
|
|
if [[ $(cat $file | grep -ci 'CREATE TABLE') -gt 0 ]]; then
|
|
mv $file "/opt/structure/$default_db_name/tables"
|
|
continue
|
|
fi
|
|
if [[ $(cat $file | grep -ci 'Final view structure for view') -gt 0 ]]; then
|
|
mv $file "/opt/structure/$default_db_name/views"
|
|
fi
|
|
done
|