版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1334480
一个系统的数据库是要每天进行备份的。有些是另外想办法,但利用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()