40 lines
1.2 KiB
Bash
Executable file
40 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Config
|
|
SSH_CONFIG="$HOME/.ssh/config"
|
|
SSH_IDENTITY="$HOME/.ssh/cmc" #Path to your SSH identity file
|
|
REMOTE_USER="cmc"
|
|
REMOTE_HOST="sales.cmctechnologies.com.au"
|
|
REMOTE_PATH="~/backups/"
|
|
LOCAL_BACKUP_DIR="backups"
|
|
DB_HOST="127.0.0.1"
|
|
DB_USER="cmc"
|
|
DB_NAME="cmc"
|
|
|
|
# Ensure backups dir exists
|
|
if [ ! -d "$LOCAL_BACKUP_DIR" ]; then
|
|
echo "Creating $LOCAL_BACKUP_DIR directory..."
|
|
mkdir -p "$LOCAL_BACKUP_DIR"
|
|
fi
|
|
|
|
# Step 1: Rsync backups (flatten output)
|
|
echo "Starting rsync..."
|
|
rsync -avz --progress -e "ssh -F $SSH_CONFIG -i $SSH_IDENTITY" --no-relative --include='backup_*.sql.gz' --exclude='*' "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" "$LOCAL_BACKUP_DIR/" || { echo "Rsync failed"; exit 1; }
|
|
echo "Rsync complete."
|
|
|
|
# Step 2: Find latest backup
|
|
LATEST_BACKUP=$(ls -t $LOCAL_BACKUP_DIR/backup_*.sql.gz | head -n1)
|
|
if [[ -z "$LATEST_BACKUP" ]]; then
|
|
echo "No backup file found!"
|
|
exit 1
|
|
fi
|
|
echo "Latest backup: $LATEST_BACKUP"
|
|
|
|
# Step 3: Import to MariaDB
|
|
read -s -p "Enter DB password for $DB_USER: " DB_PASS
|
|
echo
|
|
|
|
echo "Importing backup to MariaDB..."
|
|
gunzip -c "$LATEST_BACKUP" | mariadb -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" || { echo "Database import failed"; exit 1; }
|
|
echo "Database import complete." |