revamp
This commit is contained in:
100
backup.go
100
backup.go
@@ -3,22 +3,19 @@ package main
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var (
|
||||
appFlag = flag.String("app", "", "run specific app")
|
||||
cfgFile = flag.String("config", "config.json", "config file")
|
||||
schedFlag = flag.String("schedule", "", "specific schedule")
|
||||
slowFlag = flag.Bool("slow", false, "slow process")
|
||||
testFlag = flag.Bool("test", false, "test run")
|
||||
debugFlag = flag.Bool("debug", false, "debug")
|
||||
testMailFlag = flag.Bool("test-mail", false, "test email setup")
|
||||
stopOnErrorFlag = flag.Bool("stop-on-error", false, "stop processing on error")
|
||||
cfg Config
|
||||
email *Email
|
||||
cfgFile = flag.String("config", "config.json", "config file")
|
||||
isDaemon = flag.Bool("daemon", false, "run as daemon")
|
||||
debug = flag.Bool("debug", false, "log debug messages")
|
||||
logFile = flag.String("logfile", "", "log file")
|
||||
cfg Config
|
||||
email *Email
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -26,70 +23,41 @@ func main() {
|
||||
|
||||
fmt.Printf("backup (%s)\n", version)
|
||||
|
||||
if *debug {
|
||||
log.SetLevel(log.DebugLevel)
|
||||
}
|
||||
if *logFile != "" {
|
||||
if f, err := os.OpenFile(*logFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644); err != nil {
|
||||
log.Printf("Cannot open logfile (%s)", err)
|
||||
} else {
|
||||
log.SetOutput(f)
|
||||
defer f.Close()
|
||||
}
|
||||
|
||||
}
|
||||
log.SetReportCaller(true)
|
||||
|
||||
email = new(Email)
|
||||
email.startTime = time.Now()
|
||||
email.items = make([]string, 0)
|
||||
|
||||
err := cfg.Load()
|
||||
if err != nil {
|
||||
if err := cfg.LoadFile(*cfgFile); err != nil {
|
||||
log.Printf("Cannot load config (%s)", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if *testMailFlag {
|
||||
SendMail(cfg.Email.SmtpHost, cfg.Email.FromEmail, "test backup email topic", "test backup email body", cfg.Email.ToEmail)
|
||||
if *isDaemon {
|
||||
cfg.Start(nil)
|
||||
server := NewServer(cfg.Admin.Addr, cfg.Admin.Username, cfg.Admin.Password)
|
||||
server.Run()
|
||||
} else {
|
||||
e := NewEmail(time.Now())
|
||||
cfg.Start(e)
|
||||
defer cfg.Stop(e)
|
||||
|
||||
cfg.Run(e)
|
||||
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
err = RunBackup(*appFlag, *stopOnErrorFlag)
|
||||
if err != nil {
|
||||
log.Printf("Cannot run schedule (%s)", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if len(email.items) > 0 {
|
||||
body := " - " + email.items[0]
|
||||
for _, v := range email.items[1:] {
|
||||
body = body + "\r\n" + " - " + v
|
||||
}
|
||||
SendMail(cfg.Email.SmtpHost, cfg.Email.FromEmail, "Autobackup report", body, cfg.Email.ToEmail)
|
||||
log.Printf("Sending summary email\r\n%v", email.items)
|
||||
}
|
||||
}
|
||||
|
||||
//RunBackup run all backup targets where schedule is registered
|
||||
func RunBackup(app string, stopOnError bool) error {
|
||||
if app == "" {
|
||||
if *debugFlag {
|
||||
log.Printf("RunBackup() : Start")
|
||||
}
|
||||
for _, a := range cfg.Apps {
|
||||
err := a.RunAppBackup()
|
||||
if err != nil {
|
||||
if *debugFlag {
|
||||
log.Printf("RunBackup() : Error running %s", a.Name)
|
||||
}
|
||||
if stopOnError {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if *debugFlag {
|
||||
log.Printf("RunBackup() : Start %s", app)
|
||||
}
|
||||
for _, a := range cfg.Apps {
|
||||
if a.Name == app {
|
||||
err := a.RunAppBackup()
|
||||
if err != nil {
|
||||
if *debugFlag {
|
||||
log.Printf("RunBackup() : Error running %s", a.Name)
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user