Refactoring of code

This commit is contained in:
2024-01-18 19:22:31 +01:00
parent a35ce20aa8
commit c6a2f630a1
4 changed files with 51 additions and 20 deletions

3
.gitignore vendored
View File

@@ -5,4 +5,5 @@ compose.yaml
.env .env
test.md test.md
.DS_Store .DS_Store
pg-bkup pg-bkup
/.idea

View File

@@ -7,7 +7,7 @@ if [ $# -eq 0 ]
fi fi
#go build #go build
CGO_ENABLED=0 GOOS=linux go build #CGO_ENABLED=0 GOOS=linux go build
docker build -f docker/Dockerfile -t jkaninda/pg-bkup:$tag . docker build -f docker/Dockerfile -t jkaninda/pg-bkup:$tag .

View File

@@ -14,7 +14,7 @@ ENV DB_HOST=""
ENV DB_NAME="" ENV DB_NAME=""
ENV DB_USERNAME="" ENV DB_USERNAME=""
ENV DB_PASSWORD="" ENV DB_PASSWORD=""
ENV DB_PORT="3306" ENV DB_PORT="5432"
ENV STORAGE=local ENV STORAGE=local
ENV BUCKETNAME="" ENV BUCKETNAME=""
ENV ACCESS_KEY="" ENV ACCESS_KEY=""

64
main.go
View File

@@ -23,7 +23,7 @@ var appVersion string = os.Getenv("VERSION")
const s3MountPath string = "/s3mnt" const s3MountPath string = "/s3mnt"
var ( var (
operation string = "bakup" operation string = "backup"
storage string = "local" storage string = "local"
file string = "" file string = ""
s3Path string = "/pg-bkup" s3Path string = "/pg-bkup"
@@ -42,7 +42,7 @@ var (
disableCompression bool = false disableCompression bool = false
startBackup bool = true startBackup bool = true
outputContent string = "" outputContent string = ""
potimeout int = 30 timeout int = 30
period string = "0 1 * * *" period string = "0 1 * * *"
) )
@@ -70,7 +70,7 @@ func init() {
dbName = *dbnameFlag dbName = *dbnameFlag
executionMode = *modeFlag executionMode = *modeFlag
dbPort = fmt.Sprint(*portFlag) dbPort = fmt.Sprint(*portFlag)
potimeout = *timeoutFlag timeout = *timeoutFlag
period = *periodFlag period = *periodFlag
disableCompression = *disableCompressionFlag disableCompression = *disableCompressionFlag
@@ -92,26 +92,44 @@ func init() {
os.Exit(0) os.Exit(0)
} }
if *dbnameFlag != "" { if *dbnameFlag != "" {
os.Setenv("DB_NAME", dbName) err := os.Setenv("DB_NAME", dbName)
if err != nil {
return
}
} }
if *pathFlag != "" { if *pathFlag != "" {
s3Path = *pathFlag s3Path = *pathFlag
os.Setenv("S3_PATH", fmt.Sprint(*pathFlag)) err := os.Setenv("S3_PATH", fmt.Sprint(*pathFlag))
if err != nil {
return
}
} }
if *fileFlag != "" { if *fileFlag != "" {
file = *fileFlag file = *fileFlag
os.Setenv("FILE_NAME", fmt.Sprint(*fileFlag)) err := os.Setenv("FILE_NAME", fmt.Sprint(*fileFlag))
if err != nil {
return
}
} }
if *portFlag != 3306 { if *portFlag != 5432 {
os.Setenv("DB_PORT", fmt.Sprint(*portFlag)) err := os.Setenv("DB_PORT", fmt.Sprint(*portFlag))
if err != nil {
return
}
} }
if *periodFlag != "" { if *periodFlag != "" {
os.Setenv("SCHEDULE_PERIOD", fmt.Sprint(*periodFlag)) err := os.Setenv("SCHEDULE_PERIOD", fmt.Sprint(*periodFlag))
if err != nil {
return
}
} }
if *storageFlag != "" { if *storageFlag != "" {
os.Setenv("STORAGE", fmt.Sprint(*storageFlag)) err := os.Setenv("STORAGE", fmt.Sprint(*storageFlag))
if err != nil {
return
}
} }
dbHost = os.Getenv("DB_HOST") dbHost = os.Getenv("DB_HOST")
dbPassword = os.Getenv("DB_PASSWORD") dbPassword = os.Getenv("DB_PASSWORD")
@@ -133,7 +151,10 @@ func version() {
fmt.Print() fmt.Print()
} }
func main() { func main() {
os.Setenv("STORAGE_PATH", storagePath) err := os.Setenv("STORAGE_PATH", storagePath)
if err != nil {
return
}
if startBackup { if startBackup {
start() start()
@@ -175,7 +196,10 @@ func backup() {
utils.Info("Backing up database...") utils.Info("Backing up database...")
bkFileName := fmt.Sprintf("%s_%s.sql.gz", dbName, time.Now().Format("20060102_150405")) bkFileName := fmt.Sprintf("%s_%s.sql.gz", dbName, time.Now().Format("20060102_150405"))
os.Setenv("PGPASSWORD", dbPassword) err := os.Setenv("PGPASSWORD", dbPassword)
if err != nil {
return
}
if disableCompression { if disableCompression {
bkFileName = fmt.Sprintf("%s_%s.sql", dbName, time.Now().Format("20060102_150405")) bkFileName = fmt.Sprintf("%s_%s.sql", dbName, time.Now().Format("20060102_150405"))
cmd := exec.Command("pg_dump", cmd := exec.Command("pg_dump",
@@ -246,7 +270,10 @@ func restore() {
if utils.FileExists(fmt.Sprintf("%s/%s", storagePath, file)) { if utils.FileExists(fmt.Sprintf("%s/%s", storagePath, file)) {
testDatabaseConnection() testDatabaseConnection()
os.Setenv("PGPASSWORD", dbPassword) err := os.Setenv("PGPASSWORD", dbPassword)
if err != nil {
return
}
extension := filepath.Ext(fmt.Sprintf("%s/%s", storagePath, file)) extension := filepath.Ext(fmt.Sprintf("%s/%s", storagePath, file))
// GZ compressed file // GZ compressed file
@@ -314,10 +341,13 @@ func s3Mount() {
utils.Fatal("Please make sure all environment variables are set") utils.Fatal("Please make sure all environment variables are set")
} else { } else {
storagePath = fmt.Sprintf("%s%s", s3MountPath, s3Path) storagePath = fmt.Sprintf("%s%s", s3MountPath, s3Path)
os.Setenv("STORAGE_PATH", storagePath) err := os.Setenv("STORAGE_PATH", storagePath)
if err != nil {
return
}
//Write file //Write file
err := utils.WriteToFile(s3fsPasswdFile, fmt.Sprintf("%s:%s", accessKey, secretKey)) err = utils.WriteToFile(s3fsPasswdFile, fmt.Sprintf("%s:%s", accessKey, secretKey))
if err != nil { if err != nil {
utils.Fatal("Error creating file") utils.Fatal("Error creating file")
} }
@@ -334,7 +364,7 @@ func s3Mount() {
) )
if err := cmd.Run(); err != nil { if err := cmd.Run(); err != nil {
utils.Fatalf("Error mounting Object storage:", err) utils.Fatal("Error mounting Object storage:", err)
} }
if err := os.MkdirAll(storagePath, os.ModePerm); err != nil { if err := os.MkdirAll(storagePath, os.ModePerm); err != nil {
@@ -363,7 +393,7 @@ func createCrontabScript() {
if err := touchCmd.Run(); err != nil { if err := touchCmd.Run(); err != nil {
utils.Fatalf("Error creating file %s: %v\n", task, err) utils.Fatalf("Error creating file %s: %v\n", task, err)
} }
var disableC string = "" var disableC = ""
if disableCompression { if disableCompression {
disableC = "--disable-compression" disableC = "--disable-compression"
} }