标题: [其他] [已解决]批处理如何判断mysql备份是否成功并调用RAR压缩? [打印本页]
作者: fishman 时间: 2010-9-26 12:53 标题: [已解决]批处理如何判断mysql备份是否成功并调用RAR压缩?
- 新建:mysql_backup.bat文件,内容如下:
-
-
- @echo off
- echo.
- echo MySQL数据库备份
-
- echo *****************************
- echo.
- echo 今天是 %date%
- echo 时间是 %time%
- echo.
- echo *****************************
-
- rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
- set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"
-
- md "F:\Backup\%Ymd%"
-
- "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"
-
- echo.
-
- echo MySQL数据库备份完成,请进行检查。。。
-
- echo.
- echo.
- rem exit
- rem pause
-
-
- DBname为你要备份的数据库名称。
复制代码
疑问1:"D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql" 这里 如何好像PHP 或者 Java那样, 给这个命令赋值一个变量名 然后判断布尔值,从而知道是否执行成功。 例如 :- <?php
- $result = $a >$b;
- if ( $result){
- echo "$a >$b ture"
- }else{
- echo "$a >$b false"
- }
-
- ?>
复制代码
疑问2:rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"
这里两个赋值我不是很明白,特别是后面对date的操作, 注释掉的是原来作者的,我在网上搜到的代码,经过自己修改之后使用。现在就是不能知道这个日期操作的原理。
疑问3:执行完备份之后,如何调用RAR.EXE来将"F:\Backup\%Ymd%\DBname.sql"这个sql文件压缩成zip格式的文件。
第一次用BAT,麻烦大家指点了。 谢谢
[ 本帖最后由 fishman 于 2010-9-26 14:48 编辑 ]
作者: Batcher 时间: 2010-9-26 13:03
1:- @echo off
- echo.
- echo MySQL数据库备份
-
- echo *****************************
- echo.
- echo 今天是 %date%
- echo 时间是 %time%
- echo.
- echo *****************************
-
- rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
- set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"
-
- md "F:\Backup\%Ymd%"
-
- "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"
- if errorlevel 1 (
- echo fail
- ) else (
- echo success
- )
- echo.
-
- echo MySQL数据库备份完成,请进行检查。。。
-
- echo.
- echo.
复制代码
作者: Batcher 时间: 2010-9-26 13:03
2:
批处理set命令截取字符详解
http://bbs.bathome.net/thread-996-1-1.html
批处理set命令变量字符截取点点通
http://bbs.bathome.net/thread-40-1-1.html
批处理新手set命令截取字符练习工具
http://bbs.bathome.net/thread-1149-1-1.html
作者: fishman 时间: 2010-9-26 13:18
原帖由 Batcher 于 2010-9-26 13:03 发表
1:@echo off
echo.
echo MySQL数据库备份
echo *****************************
echo.
echo 今天是 %date%
echo 时间是 %time%
echo.
echo *****************************
rem 注释:"Ymd=%date:~,4%%da ...
-
-
- "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8
- DBname > "F:\Backup\%Ymd%\DBname.sql"
- if errorlevel 1 (
- echo MySQL备份失败请检查
- ) else (
- echo MySQL数据库备份完成,请进行检查。。。
- )
- echo.
复制代码
这个的确可以判断到是否执行成功。
但是还有一个问题啊, 就算执行不成功, 他还是会将 "F:\Backup\%Ymd%\DBname.sql" 这个sql文件 导出到这个路径。 如何做到没执行成功就不导出这个sql文件呢?
作者: robinsnelson 时间: 2010-9-26 13:20
前两个管理员大人已经说了 第三个问题的话。。 刚才测试的时候可以用call + winrar执行路径 +文件名来执行 不过会弹出一个确定窗口 这个我就不会了 。。
我用的好压 写的是- call "D:\Program Files\HaoZip\HaoZip.exe" E:\test.txt
复制代码
不过运行后会弹出一个窗口 还是要手动确定的 而且rar文件的保存目录也不好确定 。。
作者: fishman 时间: 2010-9-26 13:24
原帖由 robinsnelson 于 2010-9-26 13:20 发表
前两个管理员大人已经说了 第三个问题的话。。 刚才测试的时候可以用call + winrar执行路径 +文件名来执行 不过会弹出一个确定窗口 这个我就不会了 。。
我用的好压 写的是call "D:\Program Files\HaoZip\HaoZip ...
我这个是放在办公室的windows03 ERP的数据库上 计划任务执行的, 不能要提示的。 不然失去意义了。
上面管理员虽然说了 如何判断执行是否成功, 我测试了一下, 但是发现,虽然可以判断是否执行成功,但是就算执行失败,那个sql文件,也会生成到对应的路径去。 就算这个数据库不存在,或者MySQL服务没有起来,他也生成个空的sql。 如何让他失败就不要导出呢?
作者: robinsnelson 时间: 2010-9-26 14:01
如果不想要导出的那个文件 可以在判断errorlevel后执行一个判断语句 不过这样麻烦一些 压缩文件的问题可以试试下面这条命令- "C:\Program Files\WinRAR\WinRAR.exe" a -df "F:\Backup\%Ymd%\DBname.sql.rar" "F:\Backup\%Ymd%\DBname.sql"
复制代码
这个是参考了winrar.exe的命令行得出的命令 应该能达到你的执行效果了
-df这个开关是说删除源文件的意思 相当于压缩后删除源文件 不想要的话可以删除掉
这样的话 修改后的命令就是下面这个样子了- @echo off
- echo.
- echo MySQL数据库备份
-
- echo *****************************
- echo.
- echo 今天是 %date%
- echo 时间是 %time%
- echo.
- echo *****************************
-
- rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
- set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"
-
- md "F:\Backup\%Ymd%"
-
- "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"
- if errorlevel 1 (
- echo fail
- del "F:\Backup\%Ymd%\DBname.sql" /f /q
- ) else (
- echo success
- "C:\Program Files\WinRAR\WinRAR.exe" a -df "F:\Backup\%Ymd%\DBname.sql.rar" "F:\Backup\%Ymd%\DBname.sql"
- )
- echo.
-
- echo MySQL数据库备份完成,请进行检查。。。
-
- echo.
- echo.
复制代码
作者: fishman 时间: 2010-9-26 14:49 标题: 回复 7楼 的帖子
谢谢你了。 感谢
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |