fix(backup): backup to qiniu, app.yml->validity change to int

This commit is contained in:
henry.chen
2021-11-12 15:30:43 +08:00
parent 6805afa759
commit 00cf0b5c9f
9 changed files with 63 additions and 25 deletions

View File

@@ -127,7 +127,7 @@ type BackupApp struct {
BackupTo string `yaml:"backupto"`
Interval string `yaml:"interval"` // circle backup, default: 7d
Validity string `yaml:"validity"` // storage days, default: 60d
Validity int `yaml:"validity"` // storage days, default: 60
Qiniu Qiniu `yaml:"qiniu"` // qiniu config
}

View File

@@ -5,6 +5,7 @@ import (
"context"
"errors"
"fmt"
"net/url"
"os"
"os/exec"
"time"
@@ -31,16 +32,19 @@ func backupFromMongoDB(now time.Time) error {
defer cancel()
// dump
arg := fmt.Sprintf("mongodump -h %s -d eiblog -o /tmp",
config.Conf.Database.Source)
u, err := url.Parse(config.Conf.Database.Source)
if err != nil {
return err
}
arg := fmt.Sprintf("mongodump -h %s -d eiblog -o /tmp", u.Host)
cmd := exec.CommandContext(ctx, "sh", "-c", arg)
err := cmd.Run()
err = cmd.Run()
if err != nil {
return err
}
// tar
name := fmt.Sprintf("eiblog-%s.tar.gz", now.Format("2006-01-02"))
arg = fmt.Sprintf("tar czf %s /tmp/eiblog", name)
arg = fmt.Sprintf("tar czf /tmp/%s /tmp/eiblog", name)
cmd = exec.CommandContext(ctx, "sh", "-c", arg)
err = cmd.Run()
if err != nil {
@@ -48,7 +52,7 @@ func backupFromMongoDB(now time.Time) error {
}
// upload file
f, err := os.Open("/tmp/eiblog/" + name)
f, err := os.Open("/tmp/" + name)
if err != nil {
return err
}
@@ -70,6 +74,7 @@ func backupFromMongoDB(now time.Time) error {
// after days delete
deleteParams := internal.DeleteParams{
Name: name,
Days: config.Conf.BackupApp.Validity,
Conf: config.Conf.BackupApp.Qiniu,
}

View File

@@ -41,15 +41,20 @@ func QiniuUpload(params UploadParams) (string, error) {
// 上传token
uploadToken := putPolicy.UploadToken(mac)
// 上传配置
region, err := storage.GetRegion(params.Conf.AccessKey, params.Conf.Bucket)
if err != nil {
return "", err
}
cfg := &storage.Config{
UseHTTPS: true,
Region: region,
}
// uploader
uploader := storage.NewFormUploader(cfg)
ret := new(storage.PutRet)
putExtra := &storage.PutExtra{}
err := uploader.Put(context.Background(), ret, uploadToken,
err = uploader.Put(context.Background(), ret, uploadToken,
key, params.Data, params.Size, putExtra)
if err != nil {
return "", err
@@ -73,9 +78,13 @@ func QiniuDelete(params DeleteParams) error {
mac := qbox.NewMac(params.Conf.AccessKey,
params.Conf.SecretKey)
// 上传配置
region, err := storage.GetRegion(params.Conf.AccessKey, params.Conf.Bucket)
if err != nil {
return err
}
cfg := &storage.Config{
Zone: &storage.ZoneHuadong,
UseHTTPS: true,
Region: region,
}
// manager
bucketManager := storage.NewBucketManager(mac, cfg)

View File

@@ -31,6 +31,7 @@ func TestQiniuUpload(t *testing.T) {
AccessKey: os.Getenv("QINIU_ACCESSKEY"),
SecretKey: os.Getenv("QINIU_SECRETKEY"),
Bucket: os.Getenv("QINIU_BUCKET"),
Domain: "bu.st.deepzz.com",
},
}}, false},
}