docker-db-backup/config.go

86 lines
1.7 KiB
Go
Raw Permalink Normal View History

2021-08-18 19:29:17 +00:00
package main
import (
"log"
"os"
2021-12-05 10:50:17 +00:00
"strconv"
2021-08-18 19:29:17 +00:00
"strings"
"time"
)
// Backup folder
// Backup interval
// Max backups to keep
type conf struct {
Folder string // Backup folder _with_ trailing slash
fullCurrentBackupPath string
Schedule string
2021-12-05 12:38:36 +00:00
MaxBackups int
2023-06-05 16:35:21 +00:00
CompletionWebhookURL string
2024-02-13 15:45:10 +00:00
CompressBackups bool
2021-08-18 19:29:17 +00:00
}
var (
config *conf
dumpTime time.Time
)
2021-08-18 20:05:02 +00:00
const (
2023-06-05 16:35:21 +00:00
envBackupFolder = `BACKUP_FOLDER`
envSchedule = `BACKUP_SCHEDULE`
envMax = `BACKUP_MAX`
envCompletionWebhookURL = `BACKUP_COMPLETION_WEBHOOK_URL`
2024-02-13 15:45:10 +00:00
envCompressBackups = `BACKUP_COMPRESS`
2021-08-18 20:05:02 +00:00
)
2021-08-18 19:29:17 +00:00
func init() {
config = &conf{
Folder: "/backups/",
2022-01-06 12:04:53 +00:00
Schedule: "0 */6 * * *",
2021-12-05 12:45:42 +00:00
MaxBackups: 12,
2021-08-18 19:29:17 +00:00
}
2021-08-18 20:05:02 +00:00
folder, has := os.LookupEnv(envBackupFolder)
2021-08-18 19:29:17 +00:00
if has {
if !strings.HasSuffix(folder, "/") {
folder = folder + "/"
}
config.Folder = folder
}
2021-12-05 10:50:17 +00:00
schedule, has := os.LookupEnv(envSchedule)
2021-12-05 10:50:17 +00:00
if has {
config.Schedule = schedule
2021-12-05 10:50:17 +00:00
}
max, has := os.LookupEnv(envMax)
if has {
2021-12-05 12:38:36 +00:00
maxBackups, err := strconv.ParseInt(max, 10, 32)
2021-12-05 10:50:17 +00:00
if err != nil {
log.Fatalf("Invalid max: %s\n", err)
}
2021-12-05 12:38:36 +00:00
config.MaxBackups = int(maxBackups)
2021-12-05 10:50:17 +00:00
}
2023-06-05 16:35:21 +00:00
webhookURL, has := os.LookupEnv(envCompletionWebhookURL)
if has {
config.CompletionWebhookURL = webhookURL
}
2024-02-13 15:45:10 +00:00
compress, has := os.LookupEnv(envCompressBackups)
if has {
config.CompressBackups = compress == "1" || compress == "true"
}
2021-08-18 19:29:17 +00:00
}
func updateFullBackupPath() {
dumpTime = time.Now()
config.fullCurrentBackupPath = config.Folder + dumpTime.Format("2006-01-02_15-04-05") + "/"
2021-08-18 19:50:04 +00:00
err := os.MkdirAll(config.fullCurrentBackupPath, 0744)
2021-08-18 19:29:17 +00:00
if err != nil {
log.Fatalf("Could not create backup folder: %s\n", err)
}
}