今天在做了一下 mysql 数据库备份的shell 脚本,不过开始也搞错了一点地方就是和  mongodump 的一个参数搞混乱了,希望他人看了之后不再犯错误,希望对你有所帮助。下次会给出  mongodump 的简单代码示例

#/bin/bash
td=`date "+%Y-%m-%d"`
backpath=/var/www/backup/$td
dbBinPath=/usr/local/mysql/bin/mysqldump
echo $1
echo $2
if [ -d "$backpath" ]
then
       rm $backpath -rf
       echo "备份数据库数据表"
fi

mkdir -p $backpath
###如果传一个参数或者不传递参数则进行导出数据库,传递参数说明导出具体的数据库(仅仅导出数据表结构)
if [ $# -lt 3 ]
then
       if [ -z "$1" ]  ### 主要是考虑到不传递参数的判断如何写  所以逻辑上调整了一下
       then
               $dbBinPath -d test > $backpath/test.sql
               $dbBinPath -d drupal > $backpath/drupal.sql
       elif [ $1 = db -a $# = 2 ]
       then
               $dbBinPath $2 > $backpath/db_$2.sql
       else
               $dbBinPath -d $1  > $backpath/str_$1.sql
       fi

else
       ####  如果给定了两个参数则说明导出某一个数据库下的莫一个数据表
       ###     不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!  
       ###--opt  
       ###同--quick --add-drop-table --add-locks --extended-insert --lock-tables

       if [ $1 = tab_structure ]
       then
               echo "仅仅导出表结构"
               $dbBinPath -d $2 --add-drop-table $2 > $backpath/tb_structure_$2_$3.sql

       elif [ $1 = tab_db ]
       then
               echo "仅仅导出数据表中的数据"
               $dbBinPath  -t $2 $3 > $backpath/tb_db_$2_$3.sql

       elif [ $1 = tab ]
       then

               echo "开始执行导出数据表和数据"
               $dbBinPath $2 $3 > $backpath/one_db_$2_$3.sql

       else

               echo "参数错误"
       fi

fi

mysqldump 的其它操作参数可以自己研究一下....如果有什么不对的地方,朋友需要可以在我的blog中留言

或者发送邮件  Email:[email protected]