一个系统的数据库是要每天进行备份的。有些是另外想办法,但利用beego的优势,在系统中自己做一个也是很简单的。思路是,meritms将数据库文件发送个某个ip地址的路由,比如发给ecms,然后ecms这个路由接受数据库文件,把它存到ecms的某个盘中。
第一步,merit中提交这个文件给ecms,后者的路由是
http://127.0.0.1:80/postdata
func Postdata() {
b :
= httplib.Post(
"http://127.0.0.1:80/postdata")
b.Param(
"username",
"astaxie")
b.Param(
"password",
"123456")
b.PostFile(
"uploadfile1",
"d:
\\
1.txt")
// b.PostFile("uploadfile2", "httplib.txt")PostFile 第一个参数是 form 表单的字段名,第二个是需要发送的文件名或者文件路径
str, err :
= b.
String()
if err
!= nil {
beego.
Error(str)
}
}
第二步,ecms接受这个文件
func (c
*MainController) Postdata() {
f, h, err :
= c.GetFile(
"uploadfile1")
beego.Info(h)
//这里 filename是路径,所以不能以filename作为保存的文件名。坑!!
defer f.Close()
if err
!= nil {
beego.
Error(err)
}
else {
c.SaveToFile(
"uploadfile1",
"./static/upload/1.txt")
// 保存位置在 static/upload, 没有文件夹要先创建
c.Ctx.WriteString(
"ok")
}
}
第三步,定时执行,还是需要再merit中。22:16分开始执行备份任务。
time1 :
=
"0 16 22 * * *"
tk1 :
= toolbox.NewTask(
"tk1", time1, func() error { controllers.Postdata();
return nil })
//func() error { fmt.Println("tk1"); return nil }
toolbox.AddTask(
"tk1", tk1)
toolbox.StartTask()
defer toolbox.StopTask()