53 lines
1.1 KiB
Bash
Executable File
53 lines
1.1 KiB
Bash
Executable File
#!/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 <plik.sql|plik.sql.gz> [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."
|