docker-db-backup/config.go

78 lines
1.4 KiB
Go
Raw 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
Interval time.Duration
MaxBackups int64
}
var (
config *conf
dumpTime time.Time
)
2021-08-18 20:05:02 +00:00
const (
envBackupFolder = `BACKUP_FOLDER`
envInterval = `BACKUP_INTERVAL`
envMax = `BACKUP_MAX`
)
2021-08-18 19:29:17 +00:00
func init() {
config = &conf{
Folder: "/backups/",
Interval: time.Hour * 6,
2021-08-18 20:05:02 +00:00
MaxBackups: 24,
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
var err error
interval, has := os.LookupEnv(envInterval)
if has {
config.Interval, err = time.ParseDuration(interval)
if err != nil {
log.Fatalf("Invalid interval: %s\n", err)
}
}
max, has := os.LookupEnv(envMax)
if has {
config.MaxBackups, err = strconv.ParseInt(max, 10, 64)
if err != nil {
log.Fatalf("Invalid max: %s\n", err)
}
}
2021-08-18 19:29:17 +00:00
updateFullBackupPath()
}
func updateFullBackupPath() {
dumpTime = time.Now()
config.fullCurrentBackupPath = config.Folder + dumpTime.Format("02-01-2006_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)
}
}