53 lines
1.5 KiB
Bash
Executable File
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="elixir_vault_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
|