#!/bin/bash function detectWordpress() { local result=$(pwd) while [[ ! ("$result" == / || -f "$result/wp-config.php") ]]; do result=$(dirname "$result") done if [[ "$result" == / ]]; then echo >&2 "no WORDPRESS detected from current folder <$(pwd)>!" exit 100 fi echo "$result" } ## MAIN ## ---- set -Eeuo pipefail WP_BASE=$(detectWordpress) WP_CONFIG="$WP_BASE/wp-config.php" DB_HOST=$(grep DB_HOST $WP_CONFIG | cut -d"'" -f4) DB_NAME=$(grep DB_NAME $WP_CONFIG | cut -d"'" -f4) DB_USER=$(grep DB_USER $WP_CONFIG | cut -d"'" -f4) DB_PASSWORD=$(grep DB_PASSWORD $WP_CONFIG | cut -d"'" -f4) TODAY=$(date +%F) BACKUP_DIR="/mnt/SHARED/wordpress-backup/$DB_NAME-$TODAY" [[ -d "$BACKUP_DIR" ]] && find "$BACKUP_DIR" -mindepth 1 -delete || mkdir -p "$BACKUP_DIR" echo -n "backing up database..." mariadb-dump -h "$DB_HOST" -u "$DB_NAME" -p"$DB_PASSWORD" "$DB_NAME" | gzip >"$BACKUP_DIR/$DB_NAME".mariadb.gz echo OK echo -n "compressing as tar.gz the wp-content folder ..." tar -czvf "$BACKUP_DIR/wp-content.tgz" -C "$WP_BASE" wp-content echo OK echo -n "copying wp-config.php file ..." cp "$WP_BASE/wp-config.php" "$BACKUP_DIR" echo OK echo "successful backup in $BACKUP_DIR, db + wp-content + wp-config"