Created
September 6, 2016 20:20
-
-
Save deeravenger/5aa546d4f3d9af0e8cbccbc725d6dfc2 to your computer and use it in GitHub Desktop.
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 | |
# Daniel Verner | |
# CarrotPlant LLC | |
# 2011 | |
# Backup each mysql databases into a different file, rather than one big file | |
# Optionally files can be gzipped (dbname.gz) | |
# | |
# Usage: dump_all_databases [ -u username -o output_dir -z ] | |
# | |
# -u username to connect mysql server | |
# -o [output_dir] optional the output directory where to put the files | |
# -z gzip enabled | |
# | |
# Note: The script will prompt for a password, you cannot specify it as command line argument for security reasons | |
# | |
# based on the solution from: sonia 16-nov-05 (http://soniahamilton.wordpress.com/2005/11/16/backup-multiple-databases-into-separate-files/) | |
PROG_NAME=$(basename $0) | |
USER="homestead" | |
PASSWORD="secret" | |
OUTPUTDIR=${PWD} | |
GZIP_ENABLED=0 | |
GZIP="" | |
MYSQLDUMP="/usr/bin/mysqldump" | |
MYSQL="/usr/bin/mysql" | |
while getopts u:o:z OPTION | |
do | |
case ${OPTION} in | |
u) USER=${OPTARG};; | |
o) OUTPUTDIR=${OPTARG};; | |
z) GZIP_ENABLED=1;; | |
?) echo "Usage: ${PROG_NAME} [ -u username -o output_dir -z ]" | |
exit 2;; | |
esac | |
done | |
if [ "$USER" != '' ]; then | |
echo "Enter password for" $USER":" | |
oldmodes=`stty -g` | |
stty -echo | |
read PASSWORD | |
stty $oldmodes | |
fi | |
if [ ! -d "$OUTPUTDIR" ]; then | |
mkdir -p $OUTPUTDIR | |
fi | |
# get a list of databases | |
databases=`$MYSQL --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"` | |
# dump each database in turn | |
for db in $databases; do | |
if [ "$db" != "mysql" ] && [ "$db" != "performance_schema" ]; then | |
echo $db | |
if [ $GZIP_ENABLED == 1 ]; then | |
$MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db | gzip > "$OUTPUTDIR/$db.gz" | |
else | |
$MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db > "$OUTPUTDIR/$db.sql" | |
fi | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment