写了一个Mysql备份的脚本,大家看看,有什么不妥地方。
这是我写的第一个Shell脚本,大家帮忙看看,
有谁需要的,我可以发给他。
可以将这个脚本放进crontab,每天凌晨执行一次,自动备份
这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
#
!
/
bin
/
bash
# This is a ShellScript For Auto DB Backup
# Powered by aspbiz
# 2004 - 09
# Setting
# 设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
# 默认情况下备份方式是tar,还可以是mysqldump , mysqldotcopy
# 默认情况下,用root ( 空 ) 登录mysql数据库,备份至 / root / dbxxxxx . tgz
DBName = " data "
DBUser = " root "
DBPasswd = ""
BackupPath = " /web1/back/ "
LogFile = " /web1/back/db.log "
DBPath = " /usr/local/mysql/ "
# BackupMethod = mysqldump
# BackupMethod = mysqlhotcopy
# BackupMethod = tar
# Setting End
NewFile = " $BackupPath " db $( date + %y%m%d ). tgz
DumpFile = " $BackupPath " db $( date + %y%m%d )
OldFile = " $BackupPath " db $( date + %y%m%d -- date = ' 5 days ago' ). tgz
echo " ------------------------------------------- " >> $ LogFile
echo $( date + " %y-%m-%d %H:%M:%S " ) >> $ LogFile
echo " -------------------------- " >> $ LogFile
# Delete Old File
if [ -f $ OldFile ]
then
rm -f $ OldFile >> $ LogFile 2 > & 1
echo " [$OldFile]Delete Old File Success! " >> $ LogFile
else
echo " [$OldFile]No Old Backup File! " >> $ LogFile
fi
if [ -f $ NewFile ]
then
echo " [$NewFile]The Backup File is exists,Can't Backup! " >> $ LogFile
else
case $ BackupMethod in
mysqldump )
if [ -z $ DBPasswd ]
then
mysqldump -u $ DBUser --opt $ DBName > $ DumpFile
else
mysqldump -u $ DBUser -p $ DBPasswd --opt $ DBName > $ DumpFile
fi
tar czvf $ NewFile $ DumpFile >> $ LogFile 2 > & 1
echo " [$NewFile]Backup Success! " >> $ LogFile
rm -rf $ DumpFile
;;
mysqlhotcopy )
rm -rf $ DumpFile
mkdir $ DumpFile
if [ -z $ DBPasswd ]
then
mysqlhotcopy -u $ DBUser $ DBName $ DumpFile >> $ LogFile 2 > & 1
else
mysqlhotcopy -u $ DBUser -p $ DBPasswd $ DBName $ DumpFile >>$ LogFile 2 > & 1
fi
tar czvf $ NewFile $ DumpFile >> $ LogFile 2 > & 1
echo " [$NewFile]Backup Success! " >> $ LogFile
rm -rf $ DumpFile
;;
* )
/ etc / init . d / mysqld stop >/ dev / null 2 > & 1
tar czvf $ NewFile $ DBPath $ DBName >> $ LogFile 2 > & 1
/ etc / init . d / mysqld start >/ dev / null 2 > & 1
echo " [$NewFile]Backup Success! " >> $ LogFile
;;
esac
fi
echo " ------------------------------------------- " >> $ LogFile
# This is a ShellScript For Auto DB Backup
# Powered by aspbiz
# 2004 - 09
# Setting
# 设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
# 默认情况下备份方式是tar,还可以是mysqldump , mysqldotcopy
# 默认情况下,用root ( 空 ) 登录mysql数据库,备份至 / root / dbxxxxx . tgz
DBName = " data "
DBUser = " root "
DBPasswd = ""
BackupPath = " /web1/back/ "
LogFile = " /web1/back/db.log "
DBPath = " /usr/local/mysql/ "
# BackupMethod = mysqldump
# BackupMethod = mysqlhotcopy
# BackupMethod = tar
# Setting End
NewFile = " $BackupPath " db $( date + %y%m%d ). tgz
DumpFile = " $BackupPath " db $( date + %y%m%d )
OldFile = " $BackupPath " db $( date + %y%m%d -- date = ' 5 days ago' ). tgz
echo " ------------------------------------------- " >> $ LogFile
echo $( date + " %y-%m-%d %H:%M:%S " ) >> $ LogFile
echo " -------------------------- " >> $ LogFile
# Delete Old File
if [ -f $ OldFile ]
then
rm -f $ OldFile >> $ LogFile 2 > & 1
echo " [$OldFile]Delete Old File Success! " >> $ LogFile
else
echo " [$OldFile]No Old Backup File! " >> $ LogFile
fi
if [ -f $ NewFile ]
then
echo " [$NewFile]The Backup File is exists,Can't Backup! " >> $ LogFile
else
case $ BackupMethod in
mysqldump )
if [ -z $ DBPasswd ]
then
mysqldump -u $ DBUser --opt $ DBName > $ DumpFile
else
mysqldump -u $ DBUser -p $ DBPasswd --opt $ DBName > $ DumpFile
fi
tar czvf $ NewFile $ DumpFile >> $ LogFile 2 > & 1
echo " [$NewFile]Backup Success! " >> $ LogFile
rm -rf $ DumpFile
;;
mysqlhotcopy )
rm -rf $ DumpFile
mkdir $ DumpFile
if [ -z $ DBPasswd ]
then
mysqlhotcopy -u $ DBUser $ DBName $ DumpFile >> $ LogFile 2 > & 1
else
mysqlhotcopy -u $ DBUser -p $ DBPasswd $ DBName $ DumpFile >>$ LogFile 2 > & 1
fi
tar czvf $ NewFile $ DumpFile >> $ LogFile 2 > & 1
echo " [$NewFile]Backup Success! " >> $ LogFile
rm -rf $ DumpFile
;;
* )
/ etc / init . d / mysqld stop >/ dev / null 2 > & 1
tar czvf $ NewFile $ DBPath $ DBName >> $ LogFile 2 > & 1
/ etc / init . d / mysqld start >/ dev / null 2 > & 1
echo " [$NewFile]Backup Success! " >> $ LogFile
;;
esac
fi
echo " ------------------------------------------- " >> $ LogFile
格式个LinuxShell脚本,需要注意的是必须用vi创建,我本来用window记事本创建的一直不能执行,搞了很长时间,文件名称存为exec.sh就好了,还有LinuxShell脚本比较严格,多一个空格少一个空格都不行。。我确定上面的脚本是可以执行的。只要键入
sh exec.sh
这样就可以了。