mirror of
https://github.com/aljazceru/haven.git
synced 2025-12-17 13:54:20 +01:00
add function to upload to a gcp bucket
This commit is contained in:
43
backup.go
43
backup.go
@@ -9,6 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"cloud.google.com/go/storage"
|
||||||
"github.com/aws/aws-sdk-go-v2/aws"
|
"github.com/aws/aws-sdk-go-v2/aws"
|
||||||
awsConfig "github.com/aws/aws-sdk-go-v2/config"
|
awsConfig "github.com/aws/aws-sdk-go-v2/config"
|
||||||
"github.com/aws/aws-sdk-go-v2/service/s3"
|
"github.com/aws/aws-sdk-go-v2/service/s3"
|
||||||
@@ -37,6 +38,8 @@ func backupDatabase() {
|
|||||||
switch config.BackupProvider {
|
switch config.BackupProvider {
|
||||||
case "aws":
|
case "aws":
|
||||||
S3Upload()
|
S3Upload()
|
||||||
|
case "gcp":
|
||||||
|
GCPBucketUpload()
|
||||||
default:
|
default:
|
||||||
log.Println("🚫 we only support AWS at this time")
|
log.Println("🚫 we only support AWS at this time")
|
||||||
}
|
}
|
||||||
@@ -44,8 +47,46 @@ func backupDatabase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func S3Upload() {
|
func GCPBucketUpload() {
|
||||||
|
bucket := getEnv("GCP_BUCKET_NAME")
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
client, err := storage.NewClient(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer client.Close()
|
||||||
|
|
||||||
|
// open the zip db file.
|
||||||
|
f, err := os.Open("db.zip")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
obj := client.Bucket(bucket).Object("db.zip")
|
||||||
|
|
||||||
|
// Upload an object with storage.Writer.
|
||||||
|
wc := obj.NewWriter(ctx)
|
||||||
|
if _, err = io.Copy(wc, f); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := wc.Close(); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("✅ Successfully uploaded %q to %q\n", "db.zip", bucket)
|
||||||
|
|
||||||
|
// delete the file.
|
||||||
|
err = os.Remove("db.zip")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func S3Upload() {
|
||||||
bucket := getEnv("AWS_BUCKET_NAME")
|
bucket := getEnv("AWS_BUCKET_NAME")
|
||||||
cfg, err := awsConfig.LoadDefaultConfig(context.TODO())
|
cfg, err := awsConfig.LoadDefaultConfig(context.TODO())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user