2021-08-18 17:47:49 +00:00
|
|
|
package main
|
|
|
|
|
2021-08-18 19:50:15 +00:00
|
|
|
import (
|
2021-12-30 11:57:58 +00:00
|
|
|
"github.com/robfig/cron/v3"
|
2021-08-18 19:50:15 +00:00
|
|
|
"log"
|
2024-02-13 15:41:27 +00:00
|
|
|
"os"
|
2021-08-18 19:50:15 +00:00
|
|
|
)
|
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
func runBackup() {
|
2021-08-18 19:50:15 +00:00
|
|
|
c, err := getClient()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Could not create client: %s", err)
|
|
|
|
}
|
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
updateFullBackupPath()
|
2021-08-18 19:50:15 +00:00
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
containers, err := getContainers(c)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Could not get containers: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
storeContainers(c, containers)
|
|
|
|
|
|
|
|
err = cleanupOldBackups()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Could not clean old backups: %s", err)
|
|
|
|
}
|
2021-08-18 19:50:15 +00:00
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
dumpAllDatabases(c)
|
2021-08-18 19:50:15 +00:00
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
err = callWebhook()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Could not call completion webhook: %s", err)
|
|
|
|
}
|
2021-12-05 12:38:36 +00:00
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
log.Println("Done.")
|
|
|
|
}
|
2021-08-18 19:50:15 +00:00
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
func main() {
|
|
|
|
noCron, has := os.LookupEnv("BACKUP_NO_CRON")
|
|
|
|
if has && (noCron == "true" || noCron == "1") {
|
|
|
|
log.Println("BACKUP_NO_CRON set, running backup once, then exiting")
|
|
|
|
runBackup()
|
|
|
|
return
|
|
|
|
}
|
2023-06-05 16:35:21 +00:00
|
|
|
|
2024-02-13 15:41:27 +00:00
|
|
|
cr := cron.New()
|
|
|
|
_, err := cr.AddFunc(config.Schedule, runBackup)
|
2021-12-30 11:57:58 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Could not create cron job: %s\n", err)
|
2021-12-05 12:42:35 +00:00
|
|
|
}
|
2023-06-05 17:19:32 +00:00
|
|
|
log.Println("DB backup service started.")
|
|
|
|
|
2022-01-06 12:05:09 +00:00
|
|
|
cr.Run()
|
2021-08-18 17:47:49 +00:00
|
|
|
}
|