Heim  >  Artikel  >  php教程  >  Mysql 备份脚本(shell)

Mysql 备份脚本(shell)

WBOY
WBOYOriginal
2016-06-07 11:40:321281Durchsuche

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元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn