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元