Files
backup-tool/main.go
Alex Csengery 3c325fd008 feat(prune): add prune files feature
This feature allows you to specify the n latest backups to keep in the
bucket.
2023-11-09 21:56:15 -05:00

51 lines
949 B
Go

package main
import (
"backup-tool/pruner"
"backup-tool/uploader"
"flag"
"github.com/joho/godotenv"
"log"
"os"
)
const (
ENDPOINT = "s3.us-west-004.backblazeb2.com"
)
var skipUpload bool
var keepNum int
func init() {
flag.BoolVar(&skipUpload, "skip-upload", false, "do not upload file to S3/Backblaze")
flag.IntVar(&keepNum, "keep-backups", 7, "number of backups to keep; 0 to keep all")
}
func main() {
flag.Parse()
err := godotenv.Load()
if err != nil {
log.Fatalf("error loading .env file: (%s)", err.Error())
}
if len(os.Args) < 2 && !skipUpload {
log.Fatalln("missing filename parameter")
}
bucketName := os.Getenv("BUCKET_NAME")
if bucketName == "" {
log.Fatalln("missing or empty BUCKET_NAME")
}
if !skipUpload {
err = uploader.UploadFile(bucketName, ENDPOINT, os.Args[1])
if err != nil {
log.Fatalln(err.Error())
}
}
if keepNum > 0 {
err = pruner.PruneFiles(bucketName, ENDPOINT, keepNum)
}
}