#!/bin/bash # ----------------------------------------------- # WordPress DB + wp-config.php backup per domain # by ChatGPT # ----------------------------------------------- BACKUP_ROOT="$HOME/backup" DATE=$(date +%Y%m%d_%H%M%S) # Pastikan folder backup root ada mkdir -p "$BACKUP_ROOT" # Loop semua domain yang punya wp-config.php for WPCONFIG in /var/www/*/wp-config.php; do [ -f "$WPCONFIG" ] || continue DOMAIN=$(basename "$(dirname "$WPCONFIG")") DEST="$BACKUP_ROOT/$DOMAIN" mkdir -p "$DEST" echo "🔹 Backup domain: $DOMAIN" # Ambil credential dari wp-config.php DB_NAME=$(grep "DB_NAME" "$WPCONFIG" | cut -d "'" -f 4) DB_USER=$(grep "DB_USER" "$WPCONFIG" | cut -d "'" -f 4) DB_PASS=$(grep "DB_PASSWORD" "$WPCONFIG" | cut -d "'" -f 4) DB_HOST=$(grep "DB_HOST" "$WPCONFIG" | cut -d "'" -f 4) # Nama file backup SQL_FILE="$DEST/db_${DB_NAME}_${DATE}.sql" CONFIG_FILE="$DEST/wp-config_${DATE}.php" # Backup database echo " ➤ Dumping database: $DB_NAME" mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$SQL_FILE" 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ DB backup done: $SQL_FILE" else echo " ❌ ERROR: Gagal dump database $DB_NAME" rm -f "$SQL_FILE" fi # Backup wp-config.php cp "$WPCONFIG" "$CONFIG_FILE" echo " ✅ Config backup done: $CONFIG_FILE" echo "-----------------------------------------------" done echo "🎉 Semua backup selesai! Lokasi: $BACKUP_ROOT"