#!/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"