客户需求:
NT系统运行着mysql的应用,要求将mysql的数据每天备份,并通过ftp上传到指定的服务器.
要是在linux上,shell 脚本很容易就搞定了,在windows上使用上却是生疏,最终决定通过批处理实现.
 
解决思路:
使用批处理文件,实现备份和上传的功能,将批处理文件加到计划任务中实现定时执行脚本。
完整的批处理文件如下 文件名dbbackup.bat
@echo off
:: this batch is to backup the db files on windows to linux server
:: created by yahoon
:: 2011.4.1
 
::backup the mysql db
mysqldump -uroot –pxxxx 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 是备份的文件名,最后的结果是demo20110401.sql ,其中%date:~0,10%表示的是date命令输出的字符串中从第0个开始的10个字符.这点很重要,因为我在英文的OS上,执行这个脚本在备份的时候报文件名错误.这是因为当你执行date命令的时候结果是
Tue 04/01/2011
要达到demo20110401.sql这样的效果文件名就要这么写demo%date:~10,4%%date:~4,2%%date:~7,2%.sql