最近研究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访问)
order deny,allow
deny from all
allow from 10.64.200.17
allow from 10.64.8.200
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')