需求场景:
有台testLink服务器,需要把数据定期备份一份,以便在其它电脑恢复。
实现思路:
1、把testlink的 数据库备份一份;
2、把附件备份一份;
3、在其它电脑安装好testLink后,恢复DB,粘贴附件即可。
备份实现过程:
1、创建一个目录 myBackData,用于存放脚本与备份的数据;
2、创建一个目录 testlinkBak 用于保存所有的备份;
3、在备份目录下创建一个目录(用当前时间命名),用于保存当天的备份;
4、导出 testlink 数据库数据到 当天目录下,命名为 testlink_bak.sql;
5、把 testlink的附件目录 upload_area copy到当天的备份目录下;
6、完成备份;
7、恢复数据非常简单,这里省略,可以手动恢复,参考如下命令:
mysql -uroot --default-character-set=utf8 DBName < DBName.sql
bat实现过程:
-----rem 文件名为:exportTableExt.bat
@echo off
rem 功能1:把数据库 testlink 导出到文件 testlink.sql 中;
rem 功能2:为了保存历史数据,复制一份数据到文件名含日期的文件中;
rem 设置备份的文件名称
set bakBaseDir=%cd%\testlinkBak
set bakFileName=testlink_bak.sql
rem 获取当前8位日期
set date=%date%
set b=%date:/=-%
set Y=%b:~0,4%
set M=%b:~5,2%
set D=%b:~8,2%
set YMD=%Y%%M%%D%
rem 获取当前的8位时间
set hh=%time:~0,2%&set mm=%time:~3,2%&set ss=%time:~6,2%
if %hh% LEQ 9 set hh=0%hh:~1,1%
if %mm% LEQ 9 set mm=0%mm:~1,1%
if %ss% LEQ 9 set ss=0%ss:~1,1%
set HMS=%hh%%mm%%ss%
rem 如果备份根目录不存在则创建
if not exist %bakBaseDir% md %bakBaseDir%
rem 如果当天备份目录不存在则创建
set todayBakPath=%bakBaseDir%\%YMD%_%HMS%
if not exist %todayBakPath% md %todayBakPath%
rem set bakPath=%SQLBakDir%\%bakFileName
rem 在文件后面增加年月日
rem set bakPath=%SQLBakDir%\%bakFileName%_%YMD%_%HMS%.sql
rem 生成默认的恢复文件
cd ..\bin
mysqldump -uroot --default-character-set=utf8 testlink >%todayBakPath%\testlink_bak.sql
#导入命令如下
#mysql -uroot --default-character-set=utf8 DBName < DBName.sql
rem 生成备份的文件,与上面的内容一样,这个只是用来归档查看。
echo 备份数据库完毕!
rem -----------以上完成DB的备份-------------------
rem 设置备份的文件名称
set bakBaseDir=%cd%
set src_upload_area=%cd%\..\..\testlink\upload_area
set dst_upload_area=%todayBakPath%\upload_area
if not exist %dst_upload_area% md %dst_upload_area%
xcopy %src_upload_area%\* %dst_upload_area% /e