Import alt-mysql plugin
This commit is contained in:
Executable
+68
@@ -0,0 +1,68 @@
|
||||
#!/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:
|
||||
restore_all.sh <katalog_backupu> [--restore-users]
|
||||
|
||||
Opis:
|
||||
Przywraca wszystkie bazy MySQL z katalogu backupu. Jeśli obecny jest plik
|
||||
`_globals.sql` lub `_globals.sql.gz`, można go odtworzyć flagą
|
||||
`--restore-users`.
|
||||
EOF
|
||||
}
|
||||
|
||||
BACKUP_DIR=""
|
||||
RESTORE_USERS="0"
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--help|-h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
--restore-users)
|
||||
RESTORE_USERS="1"
|
||||
;;
|
||||
*)
|
||||
if [ -n "$BACKUP_DIR" ]; then
|
||||
echo "Podano więcej niż jeden katalog backupu." >&2
|
||||
exit 1
|
||||
fi
|
||||
BACKUP_DIR="$arg"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$BACKUP_DIR" ] || {
|
||||
usage
|
||||
exit 1
|
||||
}
|
||||
[ -d "$BACKUP_DIR" ] || {
|
||||
echo "Katalog nie istnieje: $BACKUP_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
mysql_load_alt_credentials
|
||||
|
||||
if [ "$RESTORE_USERS" = "1" ]; then
|
||||
for globals_file in "$BACKUP_DIR/_globals.sql.gz" "$BACKUP_DIR/_globals.sql"; do
|
||||
[ -f "$globals_file" ] || continue
|
||||
mysql_restore_stream mysql "$globals_file"
|
||||
break
|
||||
done
|
||||
fi
|
||||
|
||||
find "$BACKUP_DIR" -maxdepth 1 -type f \( -name '*.sql' -o -name '*.sql.gz' \) ! -name '_globals.*' | sort | while IFS= read -r file; do
|
||||
[ -n "$file" ] || continue
|
||||
db_name="$(basename "$file" | sed -E 's/\.sql(\.gz)?$//')"
|
||||
db_name="$(mysql_safe_identifier "$db_name")"
|
||||
mysql_exec mysql -e "DROP DATABASE IF EXISTS $(mysql_quote_identifier "$db_name");"
|
||||
mysql_exec mysql -e "CREATE DATABASE $(mysql_quote_identifier "$db_name") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
mysql_restore_stream "$db_name" "$file"
|
||||
echo "Przywrócono ${db_name}"
|
||||
done
|
||||
Reference in New Issue
Block a user