fix: update import/export to use params

This commit is contained in:
uprightbass360
2025-10-27 17:50:23 -04:00
parent 8225526eed
commit 9255ac82d8
3 changed files with 65 additions and 64 deletions

View File

@@ -2,17 +2,17 @@
# Export auth and character databases to ExportBackup_<timestamp>/
set -euo pipefail
MYSQL_PW="${MYSQL_ROOT_PASSWORD}"
DB_AUTH="${DB_AUTH_NAME}"
DB_CHAR="${DB_CHARACTERS_NAME}"
usage(){
cat <<EOF
Usage: ./backup-export.sh [output_dir]
Usage: ./backup-export.sh [output_dir] <mysql_password> <auth_db> <characters_db>
Creates a timestamped backup of the auth and character databases.
If output_dir is provided, places the timestamped folder inside it
(default: .).
Arguments:
[output_dir] Output directory (default: .)
<mysql_password> MySQL root password (required)
<auth_db> Auth database name (required)
<characters_db> Characters database name (required)
Outputs:
ExportBackup_YYYYMMDD_HHMMSS/
@@ -28,6 +28,26 @@ case "${1:-}" in
-h|--help) usage; exit 0;;
esac
MYSQL_PW="$2"
DB_AUTH="$3"
DB_CHAR="$4"
# Check if required parameters are provided
if [[ -z "$MYSQL_PW" ]]; then
echo "Error: MySQL password required as second argument." >&2
exit 1
fi
if [[ -z "$DB_AUTH" ]]; then
echo "Error: Auth database name required as third argument." >&2
exit 1
fi
if [[ -z "$DB_CHAR" ]]; then
echo "Error: Characters database name required as fourth argument." >&2
exit 1
fi
DEST_PARENT="${1:-.}"
TIMESTAMP="$(date +%Y%m%d_%H%M%S)"
DEST_DIR="${DEST_PARENT%/}/ExportBackup_${TIMESTAMP}"

View File

@@ -2,24 +2,28 @@
# Restore auth and character databases from ImportBackup/ and verify service health.
set -euo pipefail
BACKUP_DIR="${1:-ImportBackup}"
MYSQL_PW="${MYSQL_ROOT_PASSWORD}"
DB_AUTH="${DB_AUTH_NAME}"
DB_CHAR="${DB_CHARACTERS_NAME}"
DB_WORLD="${DB_WORLD_NAME}"
COLOR_RED='\033[0;31m'
COLOR_GREEN='\033[0;32m'
COLOR_YELLOW='\033[1;33m'
COLOR_RESET='\033[0m'
log(){ printf '%b\n' "${COLOR_GREEN}$*${COLOR_RESET}"; }
warn(){ printf '%b\n' "${COLOR_YELLOW}$*${COLOR_RESET}"; }
err(){ printf '%b\n' "${COLOR_RED}$*${COLOR_RESET}"; }
usage(){
cat <<EOF
Usage: ./backup-import.sh [backup_dir]
Usage: ./backup-import.sh [backup_dir] <mysql_password> <auth_db> <characters_db> <world_db>
Restores user accounts and characters from a backup folder.
Default backup directory: ImportBackup/
Arguments:
[backup_dir] Backup directory (default: ImportBackup/)
<mysql_password> MySQL root password (required)
<auth_db> Auth database name (required)
<characters_db> Characters database name (required)
<world_db> World database name (required)
Required files:
acore_auth.sql or acore_auth.sql.gz
acore_characters.sql or acore_characters.sql.gz
@@ -39,9 +43,32 @@ case "${1:-}" in
-h|--help) usage; exit 0;;
esac
log(){ printf '%b\n' "${COLOR_GREEN}$*${COLOR_RESET}"; }
warn(){ printf '%b\n' "${COLOR_YELLOW}$*${COLOR_RESET}"; }
err(){ printf '%b\n' "${COLOR_RED}$*${COLOR_RESET}"; }
BACKUP_DIR="${1:-ImportBackup}"
MYSQL_PW="$2"
DB_AUTH="$3"
DB_CHAR="$4"
DB_WORLD="$5"
# Check if required parameters are provided
if [[ -z "$MYSQL_PW" ]]; then
err "MySQL password required as second argument."
exit 1
fi
if [[ -z "$DB_AUTH" ]]; then
err "Auth database name required as third argument."
exit 1
fi
if [[ -z "$DB_CHAR" ]]; then
err "Characters database name required as fourth argument."
exit 1
fi
if [[ -z "$DB_WORLD" ]]; then
err "World database name required as fifth argument."
exit 1
fi
require_file(){
local file="$1"

View File

@@ -1,46 +0,0 @@
#!/bin/bash
# Restore auth/characters/world databases from a backup folder.
set -euo pipefail
usage(){
cat <<EOF
Usage: $0 <backup_dir>
<backup_dir> should contain acore_auth.sql.gz, acore_characters.sql.gz, acore_world.sql.gz
EOF
}
if [[ $# -ne 1 ]]; then
usage; exit 1
fi
BACKUP_DIR="$1"
MYSQL_PW="${MYSQL_ROOT_PASSWORD:-azerothcore123}"
DB_AUTH="${DB_AUTH_NAME:-acore_auth}"
DB_CHAR="${DB_CHARACTERS_NAME:-acore_characters}"
DB_WORLD="${DB_WORLD_NAME:-acore_world}"
[[ -d "$BACKUP_DIR" ]] || { echo "Backup dir not found: $BACKUP_DIR" >&2; exit 1; }
restore(){
local db="$1" file="$2"
if [[ ! -f "$file" ]]; then
echo "Skipping $db (missing $file)"; return
fi
echo "Importing $file into $db"
case "$file" in
*.sql.gz) gzip -dc "$file" ;;
*.sql) cat "$file" ;;
*) echo "Unsupported file type: $file" >&2; return ;;
esac | docker exec -i ac-mysql mysql -uroot -p"$MYSQL_PW" "$db"
}
restore "$DB_AUTH" "$BACKUP_DIR/acore_auth.sql.gz"
restore "$DB_CHAR" "$BACKUP_DIR/acore_characters.sql.gz"
# optional world restore
if [[ -f "$BACKUP_DIR/acore_world.sql.gz" ]]; then
echo "World dump found. Restore? [y/N]"
read -r ans
if [[ "$ans" =~ ^[Yy]$ ]]; then
restore "$DB_WORLD" "$BACKUP_DIR/acore_world.sql.gz"
fi
fi