Files
backup-tool/uploader/uploader.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

53 lines
1.0 KiB
Go

package uploader
import (
"backup-tool/helpers"
"context"
"errors"
"github.com/minio/minio-go/v7"
"log"
"os"
)
func UploadFile(bucketName, endpoint, fileName string) error {
ctx := context.Background()
accessKeyID, secretAccessKey, err := helpers.GetCredentials()
if err != nil {
return (err)
}
client, err := helpers.CreateClient(accessKeyID, secretAccessKey, endpoint)
if err != nil {
return (err)
}
err = helpers.VerifyBucket(client, ctx, bucketName)
if err != nil {
return err
}
absolutePath, basename, err := validateUploadFile(fileName)
if err != nil {
return err
}
_, err = client.FPutObject(ctx, bucketName, basename, absolutePath, minio.PutObjectOptions{})
if err != nil {
return err
}
log.Printf("upload of %s complete\n", basename)
return nil
}
func validateUploadFile(fileName string) (string, string, error) {
file, err := os.Stat(fileName)
if err != nil {
return "", "", err
}
if file.IsDir() {
return "", "", errors.New("upload of directories is not supported")
}
return fileName, file.Name(), nil
}