This feature allows you to specify the n latest backups to keep in the bucket.
53 lines
1.0 KiB
Go
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
|
|
}
|