feat(prune): add prune files feature

This feature allows you to specify the n latest backups to keep in the
bucket.
This commit is contained in:
2023-11-09 21:56:15 -05:00
parent d316b8ff4b
commit 21db79a333
5 changed files with 127 additions and 49 deletions

25
main.go
View File

@@ -1,7 +1,9 @@
package main
import (
"backup-tool/pruner"
"backup-tool/uploader"
"flag"
"github.com/joho/godotenv"
"log"
"os"
@@ -11,13 +13,22 @@ 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 {
if len(os.Args) < 2 && !skipUpload {
log.Fatalln("missing filename parameter")
}
@@ -26,8 +37,14 @@ func main() {
log.Fatalln("missing or empty BUCKET_NAME")
}
err = uploader.UploadFile(bucketName, ENDPOINT, os.Args[1])
if err != nil {
log.Fatalln(err.Error())
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)
}
}