#!/bin/bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # shellcheck source=./mysql_common.sh source "$SCRIPT_DIR/mysql_common.sh" usage() { cat <<'EOF' Użycie: dbrestore.sh [nazwa_bazy] Opis: Przywraca pojedynczą bazę MySQL z pliku dumpa. Gdy nazwa bazy nie zostanie podana, skrypt wyprowadza ją z nazwy pliku. EOF } [ "${1:-}" = "--help" ] && { usage exit 0 } [ $# -ge 1 ] || { usage exit 1 } FILE="$1" [ -f "$FILE" ] || { echo "Plik nie istnieje: $FILE" >&2 exit 1 } case "$FILE" in *.sql|*.sql.gz|*.gz) ;; *) echo "Dozwolone są pliki .sql, .sql.gz lub .gz." >&2 exit 1 ;; esac TARGET_DB="${2:-$(basename "$FILE" | sed -E 's/\.sql(\.gz)?$//; s/\.gz$//')}" TARGET_DB="$(mysql_safe_identifier "$TARGET_DB")" mysql_load_alt_credentials mysql_exec mysql -e "DROP DATABASE IF EXISTS $(mysql_quote_identifier "$TARGET_DB");" mysql_exec mysql -e "CREATE DATABASE $(mysql_quote_identifier "$TARGET_DB") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" mysql_restore_stream "$TARGET_DB" "$FILE" echo "Przywracanie bazy ${TARGET_DB} zakończone."