ホームページ  >  記事  >  php教程  >  Mysql 备份脚本(shell)

Mysql 备份脚本(shell)

WBOY
WBOYオリジナル
2016-06-07 11:40:321281ブラウズ

Mysql 备份脚本
#!/bin/sh<br> <br> <br> menu_list()<br> {<br>     echo  ;<br>     echo -e "###################\\033[1;31m请选择备份类型\\033[0m####################"<br>     echo -e "**-------\\033[1;34m1\\033[0m). 备份所有数据库------------------------**"<br>     echo -e "**-------\\033[1;34m2\\033[0m). 备份单个数据库包括(表、存储过程、函数)**"<br>     echo -e "**-------\\033[1;34m3\\033[0m). 备份单个数据库下的一个或多个表--------**"<br>     echo -e "**-------\\033[1;34m4\\033[0m). 备份单个数据库下的存储过程和函数------**"<br>     echo -e "**-------\\033[1;34m5\\033[0m). 操作说明------------------------------**"<br>     echo -e "**-------\\033[1;34m6\\033[0m). 退出----------------------------------**"<br>     echo -e "*****************************************************"<br>     read -p "请选择备份类型[1~6]:" list<br>     <br>     if [ -z "${list//[0-9]/}" ]<br>     then<br>         return $list<br>     else<br>         return 0<br>     fi<br>     <br> }<br> <br> <br> ## backup all database case=1<br> bk_alldb()<br> {<br>     read -sp "请输入mysql root用户密码:" pw<br>     echo -e "\n开始备份所有数据库,请稍后... ..."<br>     <br>     arr=`mysql -uroot -p"$pw" -s -w -e 'show databases'`<br>     dir=`pwd`<br>     time=`date +%Y-%m-%d`<br>     <br>     if [ ! -d $time ]<br>     then<br>         mkdir $time<br>     fi<br> <br>     for dbname in $arr<br>     do<br>         if [ "$dbname" != "mysql" -o "$dbname" != "information_schema" -o "$dbname" != "test" ]<br>         then<br>             mysqldump -uroot -p"$pw" -R --default-character-set=utf8 "$dbname" > $dir/$time/"$dbname"_"$time".sql<br>             if [ $? -ne 0 ]<br>             then<br>                 echo "$dbname 备份出错!"<br>                 exit 1<br>             fi<br>         fi<br>     done<br>     echo -e "备份所有库完成,^_^!\n"<br> }<br> <br> ## backup one db case=2<br> bk_onedb()<br> {<br>     read -p "请输入备份的数据名称:" dbname<br>     read -p "请输入用户名称:" username<br>     read -sp "请输入用户密码:" pw<br>     echo -e "\n开始备份数据库,请稍后... ..."<br>     <br>     dir=`pwd`<br>     time=`date +%Y-%m-%d`<br>     <br>     if [ ! -d $time ]<br>     then<br>         mkdir $time<br>     fi<br>     <br>     mysqldump -u"$username" -p"$pw" -R --default-character-set=utf8 "$dbname" > $dir/$time/"$dbname"_"$time".sql<br>     if [ $? -ne 0 ]<br>     then<br>         echo "$dbname 备份出错!"<br>         exit 1<br>     fi<br> <br>     echo -e "备份单个数据库完成,^_^!\n"<br> }<br> <br> <br> ## backup table case=3<br> bk_table()<br> {<br>     read -p "请输入备份的数据库名称:" dbname<br>     read -p "请输入用户名称:" username<br>     read -s -p "请输入用户密码:" pw<br>     read -p "请输入要备份的表名称,如果是多个表以空格分割开:" tablename<br>     echo -e "\n开始备份数据库,请稍后... ..."<br> <br>     dir=`pwd`<br>     time=`date +%Y-%m-%d`<br>     <br>     if [ ! -d $time ]<br>     then<br>         mkdir $time<br>     fi<br>     <br>     mysqldump -u"$username" -p"$pw" --default-character-set=utf8 "$dbname" --tables $tablename > $dir/$time/"$dbname"_"$time".sql<br>     if [ $? -ne 0 ]<br>     then<br>         echo "$dbname 备份出错!"<br>         exit 1<br>     fi<br> <br>     echo -e "备份表完成,^_^!\n"<br> }<br> <br> ## backup table case=4<br> bk_dbproc()<br> {<br>     read -p "请输入备份的数据库名称:" dbname<br>     read -p "请输入用户名称:" username<br>     read -sp "请输入用户密码:" pw<br>     echo -e "\n开始备份数据库,请稍后... ..."<br>     <br>     dir=`pwd`<br>     time=`date +%Y-%m-%d`<br>     <br>     if [ ! -d $time ]<br>     then<br>         mkdir $time<br>     fi<br>     <br>     mysqldump -u"$username" -p"$pw" -t -d -R --default-character-set=utf8 "$dbname" > $dir/$time/"$dbname"_"$time".sql<br>     if [ $? -ne 0 ]<br>     then<br>         echo "$dbname 备份出错!"<br>         exit 1<br>     fi<br> <br>     echo -e "备份存储过程函数完成,^_^!\n"<br> }<br> <br> ## help<br> readme()<br> {<br>     echo  "1.选择1则备份MySql下的所有数据库(不包含系统创建的默认库),备份结果保存在当前目录下以当天日期为目录的文件夹中。"<br>     echo  "2.选择2则备份输入的数据库,备份结果包含该库的存储过程和函数 ,保存在日期为名的文件夹中。"<br>     echo  "3.选择3则备份指定数据库下的一个或者多个表。"<br>     echo  "4.选择4则只备份指定数据下存储过程和函数不包括建表语句和数据。"<br>     echo  "5.所有备份结果的默认字符集都为utf8。"<br> }<br> <br> <br> ## main<br> while [ 1 ]<br> do    <br>     menu_list;<br>     select=$?    <br>     case "$select" in<br>     1)<br>         bk_alldb;;<br>     2)<br>         bk_onedb;;<br>     3)<br>         bk_table;;<br>     4)<br>         bk_dbproc;;<br>     5)<br>         readme;;<br>     6)<br>         exit 1 ;;<br>     *)<br>         echo "请在1~6之间选择备份类型!";;<br>     esac<br> done

AD:真正免费,域名+虚机+企业邮箱=0元

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。