#!/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