diff --git a/main.go b/main.go index 476e015..c4d5fcb 100755 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "local/lastn/lastn" "local/rssmon3/config" "local/rssmon3/handlers" "local/rssmon3/monitor" @@ -8,6 +9,8 @@ import ( "log" "os" "os/signal" + "path" + "path/filepath" "syscall" "time" ) @@ -37,6 +40,8 @@ func main() { h := handlers.New(m.Outgoing) go InterruptAfter(h.Run, sigc) + go EnqueueBackups() + signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, @@ -54,3 +59,35 @@ func InterruptAfter(foo func() error, c chan os.Signal) { } c <- syscall.SIGINT } + +func EnqueueBackups() { + realpath, err := filepath.Abs(config.Values().Addr) + if err != nil { + log.Println("dir", config.Values().Addr, "not found, so no backups") + return + } + conf := lastn.Config{ + N: 10, + Rclone: path.Dir(realpath) + "-backups", + Root: realpath, + Ns: "backups", + Store: "rclone", + Conf: "/dev/null", + } + log.Printf("backups conf: %+v", conf) + lastn, err := lastn.New(conf) + if err != nil { + log.Println("backups disabled:", realpath, ":", err) + return + } + ticker := time.NewTicker(time.Hour * 12) + if err := lastn.Push(); err != nil { + log.Println("backup failed:", err) + } + for _ = range ticker.C { + log.Println("backing up...") + if err := lastn.Push(); err != nil { + log.Println("backup failed:", err) + } + } +}