This feature allows you to specify the n latest backups to keep in the bucket.
51 lines
949 B
Go
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)
|
|
}
|
|
}
|