From abf1aeba7c27ee1b9e8810dc6b4b6fd43ac42a38 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Thu, 12 Dec 2024 12:43:06 +0100 Subject: [PATCH] chore: add convert bytes to a human-readable string with the appropriate unit (bytes, MiB, or GiB) --- pkg/azure.go | 5 +++-- pkg/backup.go | 5 +++-- pkg/remote.go | 10 ++++++---- pkg/s3.go | 3 ++- templates/email.tmpl | 2 +- templates/telegram.tmpl | 2 +- utils/config.go | 2 +- utils/utils.go | 16 ++++++++++++++-- 8 files changed, 31 insertions(+), 14 deletions(-) diff --git a/pkg/azure.go b/pkg/azure.go index 9df74ba..5c5d468 100644 --- a/pkg/azure.go +++ b/pkg/azure.go @@ -57,13 +57,14 @@ func azureBackup(db *dbConfig, config *BackupConfig) { } } - + utils.Info("Backup name is %s", finalFileName) + utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize))) utils.Info("Uploading backup archive to Azure Blob storage ... done ") // Send notification utils.NotifySuccess(&utils.NotificationData{ File: finalFileName, - BackupSize: utils.BytesToMb(uint64(backupSize)), + BackupSize: utils.ConvertBytes(uint64(backupSize)), Database: db.dbName, Storage: config.storage, BackupLocation: filepath.Join(config.remotePath, finalFileName), diff --git a/pkg/backup.go b/pkg/backup.go index 78b788f..4140ddb 100644 --- a/pkg/backup.go +++ b/pkg/backup.go @@ -277,7 +277,6 @@ func localBackup(db *dbConfig, config *BackupConfig) { utils.Error("Error: %s", err) } backupSize = fileInfo.Size() - utils.Info("Backup name is %s", finalFileName) localStorage := local.NewStorage(local.Config{ LocalPath: tmpPath, RemotePath: storagePath, @@ -286,11 +285,13 @@ func localBackup(db *dbConfig, config *BackupConfig) { if err != nil { utils.Fatal("Error copying backup file: %s", err) } + utils.Info("Backup name is %s", finalFileName) + utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize))) utils.Info("Backup saved in %s", filepath.Join(storagePath, finalFileName)) // Send notification utils.NotifySuccess(&utils.NotificationData{ File: finalFileName, - BackupSize: utils.BytesToMb(uint64(backupSize)), + BackupSize: utils.ConvertBytes(uint64(backupSize)), Database: db.dbName, Storage: config.storage, BackupLocation: filepath.Join(storagePath, finalFileName), diff --git a/pkg/remote.go b/pkg/remote.go index b668413..5228573 100644 --- a/pkg/remote.go +++ b/pkg/remote.go @@ -88,11 +88,13 @@ func sshBackup(db *dbConfig, config *BackupConfig) { } } + utils.Info("Backup name is %s", finalFileName) + utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize))) utils.Info("Uploading backup archive to remote storage ... done ") // Send notification utils.NotifySuccess(&utils.NotificationData{ File: finalFileName, - BackupSize: utils.BytesToMb(uint64(backupSize)), + BackupSize: utils.ConvertBytes(uint64(backupSize)), Database: db.dbName, Storage: config.storage, BackupLocation: filepath.Join(config.remotePath, finalFileName), @@ -161,7 +163,6 @@ func ftpBackup(db *dbConfig, config *BackupConfig) { finalFileName = fmt.Sprintf("%s.%s", config.backupFileName, "gpg") } utils.Info("Uploading backup archive to the remote FTP server ... ") - utils.Info("Backup name is %s", finalFileName) ftpConfig := loadFtpConfig() ftpStorage, err := ftp.NewStorage(ftp.Config{ Host: ftpConfig.host, @@ -198,13 +199,14 @@ func ftpBackup(db *dbConfig, config *BackupConfig) { } } - + utils.Info("Backup name is %s", finalFileName) + utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize))) utils.Info("Uploading backup archive to the remote FTP server ... done ") // Send notification utils.NotifySuccess(&utils.NotificationData{ File: finalFileName, - BackupSize: utils.BytesToMb(uint64(backupSize)), + BackupSize: utils.ConvertBytes(uint64(backupSize)), Database: db.dbName, Storage: config.storage, BackupLocation: filepath.Join(config.remotePath, finalFileName), diff --git a/pkg/s3.go b/pkg/s3.go index 9a5c6da..9588782 100644 --- a/pkg/s3.go +++ b/pkg/s3.go @@ -89,11 +89,12 @@ func s3Backup(db *dbConfig, config *BackupConfig) { } } utils.Info("Backup saved in %s", filepath.Join(config.remotePath, finalFileName)) + utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize))) utils.Info("Uploading backup archive to remote storage S3 ... done ") // Send notification utils.NotifySuccess(&utils.NotificationData{ File: finalFileName, - BackupSize: utils.BytesToMb(uint64(backupSize)), + BackupSize: utils.ConvertBytes(uint64(backupSize)), Database: db.dbName, Storage: config.storage, BackupLocation: filepath.Join(config.remotePath, finalFileName), diff --git a/templates/email.tmpl b/templates/email.tmpl index 2c93ab5..bc859ae 100644 --- a/templates/email.tmpl +++ b/templates/email.tmpl @@ -56,7 +56,7 @@
  • Backup End Time: {{.EndTime}}
  • Backup Storage: {{.Storage}}
  • Backup Location: {{.BackupLocation}}
  • -
  • Backup Size: {{.BackupSize}} MiB
  • +
  • Backup Size: {{.BackupSize}}
  • Backup Reference: {{.BackupReference}}
  • diff --git a/templates/telegram.tmpl b/templates/telegram.tmpl index 2c2013b..6e38ecf 100644 --- a/templates/telegram.tmpl +++ b/templates/telegram.tmpl @@ -10,7 +10,7 @@ Backup Details: - Backup EndTime: {{.EndTime}} - Backup Storage: {{.Storage}} - Backup Location: {{.BackupLocation}} -- Backup Size: {{.BackupSize}} MiB +- Backup Size: {{.BackupSize}} - Backup Reference: {{.BackupReference}} You can access the backup at the specified location if needed. \ No newline at end of file diff --git a/utils/config.go b/utils/config.go index e76fbc4..9f8b8c8 100644 --- a/utils/config.go +++ b/utils/config.go @@ -37,7 +37,7 @@ type MailConfig struct { } type NotificationData struct { File string - BackupSize uint64 + BackupSize string Database string StartTime string EndTime string diff --git a/utils/utils.go b/utils/utils.go index 82b2e39..d873b79 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -255,6 +255,18 @@ func CronNextTime(cronExpr string) time.Time { return next } -func BytesToMb(b uint64) uint64 { - return b / 1024 / 1024 +// ConvertBytes converts bytes to a human-readable string with the appropriate unit (bytes, MiB, or GiB). +func ConvertBytes(bytes uint64) string { + const ( + MiB = 1024 * 1024 + GiB = MiB * 1024 + ) + switch { + case bytes >= GiB: + return fmt.Sprintf("%.2f GiB", float64(bytes)/float64(GiB)) + case bytes >= MiB: + return fmt.Sprintf("%.2f MiB", float64(bytes)/float64(MiB)) + default: + return fmt.Sprintf("%d bytes", bytes) + } }