#!/bin/bash filename="$(hostname) $(date +'%Y-%m-%d %H%M%S')" skip_dbs=("mysql" "information_schema" "performance_schema" "sys") tmpdir="/tmp/fw-db-backup" workdir="$tmpdir/$filename" mariadb_user="" mariadb_pass="" db_backups_depot="." current_dir="$(dirname "$0")" config_path="$current_dir/config.sh" if [ ! -e "$config_path" ]; then echo "config.sh not found, copy config.sh.example if you haven't yet" exit 1 fi source "$config_path" echo "Resetting temp directory..." rm -rf "$tmpdir" mkdir -p "$workdir" dbs=$(mysql -u "$mariadb_user" -p"$mariadb_pass" --skip-column-names -e "SHOW DATABASES") for db in $dbs; do if [[ " ${skip_dbs[@]} " =~ " $db " ]]; then continue fi echo "Dumping $db.sql..." mysqldump --default-character-set=utf8mb4 --single-transaction \ --tz-utc --triggers --routines --hex-blob --add-locks \ --order-by-primary --skip-lock-tables -QqB \ -u "$mariadb_user" -p"$mariadb_pass" \ --result-file="$workdir/$db.sql" $db done; echo "Creating package..." tar -cjvf "$db_backups_depot/$filename.tar.bz2" -C "$tmpdir/" "$filename" echo "Cleaning up..." rm -r "$tmpdir"