#!/usr/bin/env bash # migrate-from-cpanel.sh — import cPanel WordPress backup into Contabo # Usage: bash migrate-from-cpanel.sh # Run AFTER deploy.sh has the new WP running. set -euo pipefail DEPLOY_DIR="/opt/ummah-wordpress" OLD_URL="https://ummah.falahos.my" NEW_URL="https://ummah2.falahos.my" BACKUP_FILE="${1:-}" if [ -z "$BACKUP_FILE" ]; then echo "Usage: $0 " echo "" echo "Export from cPanel:" echo " 1. cPanel → Backup Wizard → Full Backup (downloads .tar.gz)" echo " 2. OR: cPanel → phpMyAdmin → Export DB as SQL" echo " 3. OR: cPanel → File Manager → compress /public_html" exit 1 fi cd "$DEPLOY_DIR" source .env EXT="${BACKUP_FILE##*.}" if [ "$EXT" = "sql" ]; then echo "▶ Importing SQL database dump" docker compose exec -T db mysql \ -u ummah_wp -p"$DB_PASSWORD" ummah_wp < "$BACKUP_FILE" echo "── Updating URLs ──" docker compose run --rm wpcli search-replace "$OLD_URL" "$NEW_URL" \ --all-tables --report-changed-only elif [ "$EXT" = "gz" ] || [ "$EXT" = "zip" ]; then echo "▶ Extracting backup archive" TMP_DIR=$(mktemp -d) if [ "$EXT" = "gz" ]; then tar -xzf "$BACKUP_FILE" -C "$TMP_DIR" else unzip -q "$BACKUP_FILE" -d "$TMP_DIR" fi # Find SQL dump inside archive SQL_FILE=$(find "$TMP_DIR" -name "*.sql" | head -1) if [ -n "$SQL_FILE" ]; then echo "── Importing database: $SQL_FILE ──" docker compose exec -T db mysql \ -u ummah_wp -p"$DB_PASSWORD" ummah_wp < "$SQL_FILE" docker compose run --rm wpcli search-replace "$OLD_URL" "$NEW_URL" \ --all-tables --report-changed-only fi # Sync wp-content (themes, plugins, uploads) WP_CONTENT=$(find "$TMP_DIR" -type d -name "wp-content" | head -1) if [ -n "$WP_CONTENT" ]; then echo "── Syncing wp-content ──" VOLUME_PATH=$(docker volume inspect ummah-wordpress_ummah-wp-data \ --format '{{.Mountpoint}}') rsync -av --exclude="cache" "$WP_CONTENT/" "$VOLUME_PATH/wp-content/" docker compose exec wordpress chown -R www-data:www-data /var/www/html/wp-content fi rm -rf "$TMP_DIR" else echo "❌ Unknown file type: $EXT (expected .sql, .tar.gz, or .zip)" exit 1 fi # ── Post-migration ──────────────────────────────────────────────────────────── echo "── Post-migration cleanup ──" docker compose run --rm wpcli cache flush docker compose run --rm wpcli rewrite flush echo "" echo "✅ Migration complete. Visit: $NEW_URL" echo " Once verified, update DNS: ummah.falahos.my → 13.140.161.244" echo " Then run: wp-cli search-replace ummah2.falahos.my ummah.falahos.my --all-tables"