Update backup main logic
parent
398076b656
commit
bca47a3616
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -e # Exit on error
|
set -e # Exit on error
|
||||||
trap 'echo "ERROR: An error occurred. Exiting."' ERR
|
trap 'echo "ERROR: An error occurred while executing $COMMAND for $ENV_NAME. Exiting."' ERR
|
||||||
|
|
||||||
# Validate arguments
|
# Validate arguments
|
||||||
if [ $# -lt 2 ]; then
|
if [ $# -lt 2 ]; then
|
||||||
|
@ -28,6 +28,11 @@ fi
|
||||||
mkdir -p "$BACKUP_REPO_PATH"
|
mkdir -p "$BACKUP_REPO_PATH"
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
|
if [ ! -f "$PASSWORD_FILE" ]; then
|
||||||
|
echo "Error: Password file not found at $PASSWORD_FILE."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
export RESTIC_REPOSITORY="$BACKUP_REPO_PATH"
|
export RESTIC_REPOSITORY="$BACKUP_REPO_PATH"
|
||||||
export RESTIC_PASSWORD=$(cat "$PASSWORD_FILE")
|
export RESTIC_PASSWORD=$(cat "$PASSWORD_FILE")
|
||||||
|
|
||||||
|
@ -36,35 +41,89 @@ log_message() {
|
||||||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Commands
|
# Ensure Restic is installed
|
||||||
|
install_restic() {
|
||||||
|
if ! which restic &>/dev/null; then
|
||||||
|
log_message "Restic not found. Installing..."
|
||||||
|
if which dnf &>/dev/null; then
|
||||||
|
dnf install -y epel-release && dnf install -y restic
|
||||||
|
elif which yum &>/dev/null; then
|
||||||
|
yum install -y restic
|
||||||
|
else
|
||||||
|
log_message "ERROR: Unsupported package manager."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
log_message "Restic is installed."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Initialize or validate repository
|
||||||
|
check_backup_repo() {
|
||||||
|
if ! restic -r "$BACKUP_REPO_PATH" snapshots &>/dev/null; then
|
||||||
|
log_message "Initializing new Restic repository..."
|
||||||
|
restic -r "$BACKUP_REPO_PATH" init
|
||||||
|
else
|
||||||
|
log_message "Restic repository validated."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Perform backup operations
|
||||||
|
perform_backup() {
|
||||||
|
local path="$1"
|
||||||
|
local tag="$2"
|
||||||
|
local exclude="$3"
|
||||||
|
|
||||||
|
log_message "Backing up $path with tag $tag..."
|
||||||
|
restic -r "$BACKUP_REPO_PATH" backup "$path" --tag "$tag" $exclude
|
||||||
|
log_message "Backup for $path completed."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Backup database
|
||||||
|
backup_database() {
|
||||||
|
log_message "Starting database backup for $ENV_NAME..."
|
||||||
|
local db_dump
|
||||||
|
db_dump=$(mktemp)
|
||||||
|
|
||||||
|
mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$db_dump"
|
||||||
|
perform_backup "$db_dump" "database-backup"
|
||||||
|
rm -f "$db_dump"
|
||||||
|
log_message "Database backup completed."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle commands
|
||||||
case "$COMMAND" in
|
case "$COMMAND" in
|
||||||
backup)
|
backup)
|
||||||
log_message "Starting full backup for environment: $ENV_NAME"
|
log_message "Starting full backup for environment: $ENV_NAME"
|
||||||
# Add logic to perform the full backup
|
install_restic
|
||||||
|
check_backup_repo
|
||||||
|
perform_backup "/var/www/webroot/ROOT/wp-content" "wp-core" "--exclude /var/www/webroot/ROOT/wp-content/uploads"
|
||||||
|
perform_backup "/var/www/webroot/ROOT/wp-content/uploads" "wp-uploads"
|
||||||
|
backup_database
|
||||||
;;
|
;;
|
||||||
backup_wp_core)
|
backup_wp_core)
|
||||||
log_message "Backing up WordPress core files for environment: $ENV_NAME"
|
log_message "Backing up WordPress core files for environment: $ENV_NAME"
|
||||||
# Add logic for WordPress core backup
|
perform_backup "/var/www/webroot/ROOT/wp-content" "wp-core" "--exclude /var/www/webroot/ROOT/wp-content/uploads"
|
||||||
;;
|
;;
|
||||||
backup_uploads)
|
backup_uploads)
|
||||||
log_message "Backing up WordPress uploads for environment: $ENV_NAME"
|
log_message "Backing up WordPress uploads for environment: $ENV_NAME"
|
||||||
# Add logic for uploads backup
|
perform_backup "/var/www/webroot/ROOT/wp-content/uploads" "wp-uploads"
|
||||||
;;
|
;;
|
||||||
backup_database)
|
backup_database)
|
||||||
log_message "Backing up WordPress database for environment: $ENV_NAME"
|
backup_database
|
||||||
# Add logic for database backup
|
|
||||||
;;
|
;;
|
||||||
check_backup_repo)
|
check_backup_repo)
|
||||||
log_message "Checking backup repository for environment: $ENV_NAME"
|
log_message "Checking backup repository for environment: $ENV_NAME"
|
||||||
# Add repository check logic
|
check_backup_repo
|
||||||
;;
|
;;
|
||||||
rotate_snapshots)
|
rotate_snapshots)
|
||||||
log_message "Rotating snapshots for environment: $ENV_NAME"
|
log_message "Rotating snapshots for environment: $ENV_NAME"
|
||||||
# Add snapshot rotation logic
|
restic -r "$BACKUP_REPO_PATH" forget --keep-last 5 --prune
|
||||||
|
log_message "Snapshot rotation completed."
|
||||||
;;
|
;;
|
||||||
create_snapshot)
|
create_snapshot)
|
||||||
log_message "Creating snapshot for environment: $ENV_NAME"
|
log_message "Creating snapshot for environment: $ENV_NAME"
|
||||||
# Add snapshot creation logic
|
restic -r "$BACKUP_REPO_PATH" backup --tag "manual-snapshot"
|
||||||
|
log_message "Snapshot creation completed."
|
||||||
;;
|
;;
|
||||||
update_restic)
|
update_restic)
|
||||||
log_message "Updating Restic for environment: $ENV_NAME"
|
log_message "Updating Restic for environment: $ENV_NAME"
|
||||||
|
|
Loading…
Reference in New Issue