From 9255ac82d885ebcb59d5bd01756c3d58eca70b37 Mon Sep 17 00:00:00 2001 From: uprightbass360 Date: Mon, 27 Oct 2025 17:50:23 -0400 Subject: [PATCH] fix: update import/export to use params --- backup-export.sh | 34 ++++++++++++++++++++++------ backup-import.sh | 49 +++++++++++++++++++++++++++++++--------- scripts/import-backup.sh | 46 ------------------------------------- 3 files changed, 65 insertions(+), 64 deletions(-) delete mode 100755 scripts/import-backup.sh diff --git a/backup-export.sh b/backup-export.sh index 9fe267b..3b8a06e 100755 --- a/backup-export.sh +++ b/backup-export.sh @@ -2,17 +2,17 @@ # Export auth and character databases to ExportBackup_/ set -euo pipefail -MYSQL_PW="${MYSQL_ROOT_PASSWORD}" -DB_AUTH="${DB_AUTH_NAME}" -DB_CHAR="${DB_CHARACTERS_NAME}" - usage(){ cat < 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 root password (required) + Auth database name (required) + 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}" diff --git a/backup-import.sh b/backup-import.sh index fa9fa7f..d5a2704 100755 --- a/backup-import.sh +++ b/backup-import.sh @@ -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 < Restores user accounts and characters from a backup folder. -Default backup directory: ImportBackup/ +Arguments: + [backup_dir] Backup directory (default: ImportBackup/) + MySQL root password (required) + Auth database name (required) + Characters database name (required) + 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" diff --git a/scripts/import-backup.sh b/scripts/import-backup.sh deleted file mode 100755 index bc6a54d..0000000 --- a/scripts/import-backup.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -# Restore auth/characters/world databases from a backup folder. -set -euo pipefail - -usage(){ - cat < - 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