使用批处理实现mysql数据库备份与上传

使用批处理实现mysql 数据库备份与上传
 
需求:
有一台 windows 服务器上跑着 mysql 的一些应用 , 现在需要将 mysql 的数据每天备份 , 并通过 ftp 上传到指定的存储服务器上
 
要是在 linux ,shell 脚本很容易就搞定了 , windows 上习惯了点鼠标 , 哪里来的脚本 , 一时还真不知道该怎么弄 .baidu,google 得知可以通过批处理或者 vbs 脚本实现 .
 
批处理是比较简单的 , 毕竟 dos 的常用命令还是知道的
 
解决思路:
使用批处理文件 , 实现备份和上传的功能
将批处理文件加到计划任务中实现每日定时执行脚本
 
完整的批处理文件如下 文件名 dbbk.bat
@echo off
:: this batch is to backup the db files on windows to linux server
:: created by yahoon
:: 2008.4.9
 
::backup the mysql db
mysqldump -uroot �Cpxxxx demo>c:\demo %date:~0,10%.sql
 
::pause
:: wait press any key to continue
:: ready to delete
 
::form the ftp command file
echo open 服务器 ip>c:\ftpdemo.txt
echo ftp 用户名 >>c:\ftpdemo.txt
echo ftp 密码 >>c:\ftpdemo.txt
echo put c:\ demo %date:~0,10%.sql >>c:\ftpdemo.txt
echo bye>>c:\ftpdemo.txt
 
::transfer the file to server via ftp
ftp -i -s:c:\ftpdemo.txt
 
::pause
 
::clean the tmp files
del c:\ftpdemo.txt
del c:\ demo %date:~0,10%.sql
说明:
1. 双冒号 :: 后面的内容为注释 , 不会执行
2. 两处 pause 语句是调试的时候用的 , 运行 pause 的结果是屏幕上显示 按任意键继续 ”, 脚本等着用户按键才会往下执行
3. demo %date:~0,10%.sql 是备份的文件名 , 最后的结果是 demo20080409.sql , 其中 %date:~0,10% 表示的是 date 命令输出的字符串中从第 0 个开始的 10 个字符 . 这点很重要 , 因为我在英文的 OS , 执行这个脚本在备份的时候报文件名错误 . 这是因为当你执行 date 命令的时候结果是
Tue 04/08/2008
要达到 demo20080409.sql 这样的效果文件名就要这么写 demo%date:~10,4%%date:~4,2%%date:~7,2%.sql
 
最后提一下写的过程中解决的一个问题
由于脚本的思路是做备份 , 然后通过 ftp 上传
所以最开始写的时候没有 ::form the ftp command file 这一段 . 而是写好一个 ftpdemo.txt 放在那
这就出现了一个问题 , 由于生成的 sql 文件名每天都变 , 这样 ftp 命令也得改 . 写死的 ftpdemo.txt 文件肯定就实现不了 .
想出了个笨主意是批处理文件里面生成的 sql 文件就定义死文件名为 demo.sql, 这样 ftpdemo.txt 文件也可以写死 . 然后等上传以后 , 再通过 linux 的脚本通过 crontab 来每天改名 .
 
多谢 coolerfeng , 一句话惊醒梦中人 , 直接由批处理文件来动态生成 ftp 命令文件 . 再次深表感谢 .
在此过程中参考了很多文章 , 难以一一列出 , 在此一并谢过 . 毕竟是得益于大家无私的分享知识 . 开源就是这样 !
 
 
 

本文出自 “yahoon的小屋” 博客,转载请与作者联系!

你可能感兴趣的:(windows,linux,数据库,mysql备份,批处理)