md "E:\数据备份\%ymd%"
"D:\MySQL\bin\mysqldump.exe" --opt -Q mysql -uroot -p123456789 >
E:\数据备份\%Ymd%\mysql.sql
REM ..... 这里可以添加更多的命令,要看你有多少个数据库,其中 -Q 后面是数据库名称
-p紧跟后面是密码
echo Winrar loading...
"C:\Program Files\WinRAR\WinRAR.exe" a
-ep1 -r -o+ -m5 -df "E:\数据备份\%Ymd%.rar" "E:\数据备份\%Ymd%"
echo OK!
把上面的命令保存为 backup.bat ,双击运行,就开始备份数据了。
第一句是建立一个变量 %Ymd% ,通过
%date% 这个系统变量得到日期,%date:~,4% 表示取日期的前面4个字符就是年份,%%date:~5,2%
表示取日期第5个字符开始的2个字符就是月份,%date:~8,2% 这个就是日期号数,如 2009-06-20 这个日期最后得到的结果是 20090620
第二句就是使用变量 %Ymd% 的值建立一个空的文件夹。
第三句开始就是使用MySQL的命令对数据库mysql进行备份,并存储在
E:\数据备份\%ymd% 这个文件夹下面,这里可以有很多类似的命令,备份多个数据库。
最后就是使用 WinRAR 对备份的数据进行压缩,并存储为以
%Ymd% 变量值建立的RAR文件名,同时删除备份的 %Ymd% 目录。
如果你想让系统自动定期备份,就可以通过系统的任务计划定期执行这个命令。
你贴上来的代码有以下几个问题:
1、一些地方该换行的没有换行,引号变成了中文的,网上复制的代码通常都有此问题。
2、日期时间格式化的用法不正确
3、长参数前缀应该是两个-号,而不是一个
4、--delete-master-logs 选项如果只有一个主库,则什么都备份不到。我移除了。
以下是我修改的文件,经过测试已经可以执行。
# encoding: utf-8#配置参数
USER=root #数据库用户名
PASSWORD=root #数据库用户密码
DATABASE=EmailSystemDB #数据库名称
WEBMASTER="123456789@qq.com" #管理员邮箱地址,用以发送备份失败消息提醒
BACKUP_DIR=backup #备份文件存储路径
LOGFILE=backup.log #日记文件路径
DATE=`date +"%Y%m%d-%H%M"` #日期格式(作为文件名)
DUMPFILE=$DATE.sql #备份文件名
ARCHIVE=$DATE.sql.tgz #压缩文件名
OPTIONS="-u$USER -p$PASSWORD --opt --extended-insert=false --triggers=false -R --hex-blob --flush-logs -B $DATABASE"
#mysqldump 参数 详情见帮助 mysqldump -help
#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] then
mkdir -p "$BACKUP_DIR"
fi
#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE echo " " >> $LOGFILE
echo "———————————————–" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "———————————————–" >> $LOGFILE
#切换至备份目录
cd $BACKUP_DIR
#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
mysqldump $OPTIONS > $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]] then
#创建备份文件的压缩包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
#输入备份成功的消息到日记文件
echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
#删除原始备份文件,只需保 留数据库备份文件的压缩包即可
rm -f $DUMPFILE
else
echo "Database Backup Fail!" >> $LOGFILE
#备份失败后向网站管理者发送邮件提醒,需要mailutils或者类似终端下发送邮件工具的支持
#如果需要发邮件,且mail配置好了,就去掉下面的注释
#mail -s “Database DATABASE Daily Backup Fail” $WEBMASTER
fi
#输出备份过程结束的提醒消息
echo "Backup Process Done"
希望能给个采纳。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)