79 lines
2.3 KiB
Bash
79 lines
2.3 KiB
Bash
#!/bin/bash
|
|
|
|
set -e # Exit on error
|
|
trap 'echo "ERROR: An error occurred. Exiting."' ERR
|
|
|
|
# Validate arguments
|
|
if [ $# -lt 2 ]; then
|
|
echo "Usage: $0 <ENV_NAME> {backup|backup_wp_core|backup_uploads|backup_database|check_backup_repo|rotate_snapshots|create_snapshot|update_restic}"
|
|
exit 1
|
|
fi
|
|
|
|
# Extract ENV_NAME and COMMAND
|
|
ENV_NAME="$1"
|
|
COMMAND="$2"
|
|
|
|
# Set dynamic configurations based on ENV_NAME
|
|
LOG_FILE="/var/log/${ENV_NAME}_backup_script.log"
|
|
BACKUP_REPO_PATH="/mnt/backups/${ENV_NAME}"
|
|
PASSWORD_FILE="/etc/restic-password"
|
|
|
|
# Validate ENV_NAME
|
|
if [ -z "$ENV_NAME" ]; then
|
|
echo "Error: ENV_NAME is not provided or empty."
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure dynamic paths exist
|
|
mkdir -p "$BACKUP_REPO_PATH"
|
|
|
|
# Set environment variables
|
|
export RESTIC_REPOSITORY="$BACKUP_REPO_PATH"
|
|
export RESTIC_PASSWORD=$(cat "$PASSWORD_FILE")
|
|
|
|
# Logging function
|
|
log_message() {
|
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
# Commands
|
|
case "$COMMAND" in
|
|
backup)
|
|
log_message "Starting full backup for environment: $ENV_NAME"
|
|
# Add logic to perform the full backup
|
|
;;
|
|
backup_wp_core)
|
|
log_message "Backing up WordPress core files for environment: $ENV_NAME"
|
|
# Add logic for WordPress core backup
|
|
;;
|
|
backup_uploads)
|
|
log_message "Backing up WordPress uploads for environment: $ENV_NAME"
|
|
# Add logic for uploads backup
|
|
;;
|
|
backup_database)
|
|
log_message "Backing up WordPress database for environment: $ENV_NAME"
|
|
# Add logic for database backup
|
|
;;
|
|
check_backup_repo)
|
|
log_message "Checking backup repository for environment: $ENV_NAME"
|
|
# Add repository check logic
|
|
;;
|
|
rotate_snapshots)
|
|
log_message "Rotating snapshots for environment: $ENV_NAME"
|
|
# Add snapshot rotation logic
|
|
;;
|
|
create_snapshot)
|
|
log_message "Creating snapshot for environment: $ENV_NAME"
|
|
# Add snapshot creation logic
|
|
;;
|
|
update_restic)
|
|
log_message "Updating Restic for environment: $ENV_NAME"
|
|
restic self-update
|
|
;;
|
|
*)
|
|
echo "Invalid command: $COMMAND"
|
|
echo "Usage: $0 <ENV_NAME> {backup|backup_wp_core|backup_uploads|backup_database|check_backup_repo|rotate_snapshots|create_snapshot|update_restic}"
|
|
exit 1
|
|
;;
|
|
esac
|