Skip to content

Instantly share code, notes, and snippets.

@mephir
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mephir/a80d98b67e803371a3fd to your computer and use it in GitHub Desktop.
Save mephir/a80d98b67e803371a3fd to your computer and use it in GitHub Desktop.
Database backup
#!/bin/bash
usage="Usage `basename $0` [--help] [[-c -u -p -h -o] n] -- script are dumping mysql database via mysqldump
where:
-u database user name (default: "")
-p database user password (default: "")
-h database hostname (default: "localhost")
-o output directory (default: "/var/backup/$dbname/"
-c compress output (default: true)
n databasename
-help show this help text
"
dbuser=""
dbpass=""
dbhost="localhost"
dbname="$BASH_ARGV"
output="/var/backups/${dbname}/"
compress=true
_now=$(date +"%y%m%d%H%M%S")
_file="${_now}_${dbname}"
if [ $1 == "-help" ] || [ $# == 0 ] || [ $1 == "--help" ]
then
echo "$usage"
exit 0
fi
while getopts :u:p:h:o:c: option
do
case "${option}"
in
u) dbuser=${OPTARG};;
p) dbpass=${OPTARG};;
h) dbhost=${OPTARG};;
o) output=${OPTARG};;
c) compress=true;;
esac
done
CMD="mysqldump -u${dbuser} -p${dbpass} ${dbname}"
target="${output}${_file}.sql"
echo "Starting database ${dbname} backup ..."
$CMD 1>${target}
rc=$?
if [[ $rc != 0 ]]
then
cat ${target}
rm -rf ${target}
exit $rc
fi
echo "Backup finished"
if [ "$compress" == true ]
then
echo "Compressing output"
CMD="tar -C ${output} -cvzf $output${_file}.tar.gz ${_file}.sql"
$CMD
echo "Remove sql file"
CMD="rm -rf ${target}"
$CMD
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment