最近研究mysql数据库远程备份、下载功能的时候,想到了用BAT来完成这些任务。思路就是用BAT配合使用mysqldump备份导出数据库的.sql脚本,用利用本机安装的WinRAR解压缩程序打包成RAR文件,然后利用Windows系统的计划任务定时执行一个BAT脚本来远程下载指定路径的SQL文件到本地指定目录。
同时,为了安全将BAT打包成的rar文件命名为.rar_bz,然后通过.htaccess指定.rar_bz为后缀名的文件可以被下载,同时必须是指定的IP可以访问,以确保安全。这样换后后缀名保存文件,是为了区分与正常在毛票票中上传的.rar文件区分开,防止其它RAR文件受影响不能正常下载。
BAT命令批量处理备份mysql及并利用winrar打包压缩成rar文件)
set "Y=%date:~,4%" set "m=%date:~5,2%" set "d=%date:~8,2%" md "D:\mysql_bak\%Y%\%m%" "D:\AppServ\MySQL\bin\mysqldump.exe" --defaults-file="D:\appserv\mysql\mysqldump-user.ini" -uroot test > D:\mysql_bak\%Y%\%m%\test_%Y%%m%%d%.sql copy D:\mysql_bak\%Y%\%m%\test_%Y%%m%%d%.sql D:\AppServ\www\auto_backup_bat\mysql_test.sql start C:\"Program Files"\WinRAR\WinRAR.exe a D:\AppServ\www\auto_backup_bat\web_test.rar_bz D:\AppServ\www
其中的mysqldump-user.ini为数据库的连接用户名和密码,因为高版本的mysql为了安全考虑,不允许直接明文在命令行中显示出这些信息,必须写在配置文件中
[mysqldump] user=root password=123456
.HTACCESS(确保安全限制指定后缀文件,只能指定IP访问)
<Files ~ ".(sql|rar_bz)$"> order deny,allow deny from all allow from 10.64.200.17 allow from 10.64.8.200 </Files>
BAT实现(远程下载备份数据库文件到本地指定目录)
set "Y=%date:~,4%" set "m=%date:~5,2%" set "d=%date:~8,2%" md "F:\Auto_download\%Y%\%m%\%d%" powershell (new-object System.Net.WebClient).DownloadFile('http://10.64.8.100/auto_backup_bat/mysql_test.sql','F:\Auto_download\%Y%\%m%\%d%\test.sql') powershell (new-object System.Net.WebClient).DownloadFile('http://10.64.8.100/auto_backup_bat/web_test.rar_bz','F:\Auto_download\%Y%\%m%\%d%\test.rar')