diff --git a/manifest.jps b/manifest.jps index 5407c14..46f1ecd 100644 --- a/manifest.jps +++ b/manifest.jps @@ -35,14 +35,14 @@ settings: - name: snapshotId caption: Snapshot ID type: string - + buttons: - caption: Backup Now action: backupnow loadingText: Backing up... confirmText: Do you want to initiate the backup process? successText: The backup process has been finished successfully. - + menu: - caption: Configure Auto Backup action: configureAutoBackup @@ -148,7 +148,7 @@ actions: configureAutoBackup: - cmd[cp]: user: root - commands: bash "/home/jelastic/mb-backups/manage_backup_schedule.sh" add "0 0 * * *" "$(cat /etc/restic-password)" + commands: bash "/home/jelastic/mb-backups/manage_backup_schedule.sh" add "0 0 * * *" "$(cat /etc/restic-password)" "${globals.envName}" - return: type: info message: "Daily backup schedule configured successfully" @@ -156,55 +156,55 @@ actions: removeAutoBackup: - cmd[cp]: user: root - commands: bash /home/litespeed/mb-backups/manage_backup_schedule.sh remove + commands: bash /home/litespeed/mb-backups/manage_backup_schedule.sh remove "${globals.envName}" - return: type: info message: "${response.out}" - + checkBackupRepo: - cmd[cp]: - user: root - commands: bash /home/jelastic/mb-backups/backup-logic.sh check_backup_repo "${globals.envName}" + user: root + commands: bash /home/jelastic/mb-backups/backup-logic.sh check_backup_repo "${globals.envName}" - return: type: info message: "${response.out}" backupnow: - cmd[cp]: - user: root - commands: bash /home/jelastic/mb-backups/backup-logic.sh "backup" + user: root + commands: bash /home/jelastic/mb-backups/backup-logic.sh "${globals.envName}" "backup" - return: type: info message: "${response.out}" backupcore: - cmd[cp]: - user: root - commands: bash /home/jelastic/mb-backups/backup_core_files.sh "${globals.envName}" "${settings.blabel}" + user: root + commands: bash /home/jelastic/mb-backups/backup_core_files.sh "${globals.envName}" "${settings.blabel}" - return: type: info message: "${response.out}" backupmedia: - cmd[cp]: - user: root - commands: bash /home/jelastic/mb-backups/backup_media.sh "${globals.envName}" "${settings.blabel}" + user: root + commands: bash /home/jelastic/mb-backups/backup_media.sh "${globals.envName}" "${settings.blabel}" - return: type: info message: "${response.out}" backupdb: - cmd[cp]: - user: root - commands: bash /home/jelastic/mb-backups/backup_database.sh "${globals.envName}" "${settings.blabel}" + user: root + commands: bash /home/jelastic/mb-backups/backup_database.sh "${globals.envName}" "${settings.blabel}" - return: type: info message: "${response.out}" restore: - cmd[cp]: - user: root - commands: bash /home/jelastic/mb-backups/restore_backup_direct.sh "${settings.snapshotId}" "${globals.envName}" + user: root + commands: bash /home/jelastic/mb-backups/restore_backup_direct.sh "${settings.snapshotId}" "${globals.envName}" - return: type: info message: "${response.out}" @@ -240,7 +240,7 @@ actions: - return: type: info message: "${response.out}" - + viewBackupSchedule: - cmd[cp]: user: root diff --git a/scripts/backup-logic.sh b/scripts/backup-logic.sh index 90fe29c..6c634b2 100644 --- a/scripts/backup-logic.sh +++ b/scripts/backup-logic.sh @@ -1,27 +1,30 @@ #!/bin/bash set -e # Exit on error -trap 'echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: An error occurred. Exiting." | tee -a "$LOG_FILE"' ERR +trap 'log_message "ERROR: An error occurred. Exiting."' ERR # Global Configurations LOG_FILE="/var/log/backup_script.log" -BACKUP_REPO_PATH="/mnt/backups/${ENV_NAME}" -PASSWORD_FILE="/etc/restic-password" -RESTIC_CONFIG_FILE="/etc/restic-config" DEFAULT_BACKUP_COUNT=5 +# Validate required variables +validate_inputs() { + : "${ENV_NAME:?ENV_NAME not set or empty. Please provide an environment name.}" + : "${RESTIC_PASSWORD:?RESTIC_PASSWORD not set}" + : "${APP_PATH:?APP_PATH not set}" + + # Dynamically set the backup path + BACKUP_REPO_PATH="/mnt/backups/${ENV_NAME}" + [ -d "$BACKUP_REPO_PATH" ] || mkdir -p "$BACKUP_REPO_PATH" + export BACKUP_REPO_PATH +} + # Logging function log_message() { local message="$1" echo "[$(date +'%Y-%m-%d %H:%M:%S')] $message" | tee -a "$LOG_FILE" } -# Validate required variables -validate_inputs() { - : "${RESTIC_PASSWORD:?RESTIC_PASSWORD not set}" - : "${BACKUP_REPO_PATH:?BACKUP_REPO_PATH not set}" -} - # Ensure Restic is installed install_restic() { if ! which restic &>/dev/null; then @@ -40,8 +43,6 @@ install_restic() { # Initialize or validate repository check_backup_repo() { - [ -d "$BACKUP_REPO_PATH" ] || mkdir -p "$BACKUP_REPO_PATH" - if ! restic -r "$BACKUP_REPO_PATH" snapshots &>/dev/null; then log_message "Initializing new Restic repository..." restic -r "$BACKUP_REPO_PATH" init