feat: Add mysqldump.sh, move handlers to targets and sources dirs.
This commit is contained in:
parent
1f2da45b25
commit
bdeb39581d
108
src/lib/handlers/sources/mysqldump.sh
Normal file
108
src/lib/handlers/sources/mysqldump.sh
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# mysqldump.sh - create SQL dump of MariaDB/MySQL database.
|
||||||
|
# Copyright (c) 2022 ge <https://nixhacks.net/>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
handler::mysqldump() {
|
||||||
|
# Create SQL-dump at location __main_target_path using mysqldump(1)
|
||||||
|
# Compression is optional.
|
||||||
|
# Handle 'mysql' URI scheme.
|
||||||
|
#
|
||||||
|
# Usage: handler::mysqldump URI
|
||||||
|
|
||||||
|
log "Run handler handler::mysqldump()"
|
||||||
|
|
||||||
|
local uri
|
||||||
|
local dst_path
|
||||||
|
local compr_util
|
||||||
|
local compr_cmd
|
||||||
|
local file_ext
|
||||||
|
|
||||||
|
uri="$1"
|
||||||
|
dst_path="$__main_target_path"
|
||||||
|
|
||||||
|
parse_uri "$uri"
|
||||||
|
|
||||||
|
[ -z "$port" ] && port=3306 # Set default MySQL port.
|
||||||
|
|
||||||
|
[ -n "$__verbose" ] && echo "Dumping database '${path##*/}'"\
|
||||||
|
"owned by ${username}@${hostname} ..." | log -p
|
||||||
|
|
||||||
|
# Select compression utility and set filename extension.
|
||||||
|
if [ -n "$compression" ]; then
|
||||||
|
set_compression "$compression"
|
||||||
|
file_ext=".sql${file_ext}"
|
||||||
|
else
|
||||||
|
compr_util=
|
||||||
|
file_ext='.sql'
|
||||||
|
fi
|
||||||
|
|
||||||
|
dump_name="${dst_path}/$(gen_backup_name "$file_ext")"
|
||||||
|
|
||||||
|
[ -n "$__verbose" ] && echo "Dump: $dump_name"
|
||||||
|
log "Dump: $dump_name"
|
||||||
|
|
||||||
|
if [ -n "$compr_util" ]; then
|
||||||
|
compr_cmd="$compr_util -c" # e.g. gzip -c
|
||||||
|
else
|
||||||
|
compr_cmd="cat"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# NOTE! mysqldump_opts and compr_cmd variables must be unquoted!
|
||||||
|
try mysqldump $mysqldump_opts \
|
||||||
|
--host="$hostname" \
|
||||||
|
--port="$port" \
|
||||||
|
"${path##*/}" \
|
||||||
|
--user="$username" \
|
||||||
|
--password="$password" |
|
||||||
|
$compr_cmd > "$dump_name"
|
||||||
|
|
||||||
|
if [ ! -s "$dump_name" ]; then
|
||||||
|
err -e "Something went wrong: Dump size is 0 bytes. Removing $dump_name"
|
||||||
|
rm "$dump_name"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# POSTGRESQL vvv
|
||||||
|
|
||||||
|
bk_dump_postgresql() {
|
||||||
|
# Do PostgreSQL dump.
|
||||||
|
|
||||||
|
bk_log "Dumping database '${path##*/}' owned by ${user}@${host} (PostgreSQL) ..."
|
||||||
|
|
||||||
|
dump_name="$entry_local"/"$(bk_get_name "$db_name" .psql.gz)"
|
||||||
|
[ "$port" ] || port=5432 # Set default PostgreSQL port.
|
||||||
|
export PGPASSWORD="$password"
|
||||||
|
|
||||||
|
pg_dump \
|
||||||
|
--host="$host" \
|
||||||
|
--port="$port" \
|
||||||
|
--dbname="${path##*/}" \
|
||||||
|
--username="$user" \
|
||||||
|
--no-password | gzip -c > "$dump_name" |& bk_log
|
||||||
|
|
||||||
|
unset PGPASSWORD
|
||||||
|
|
||||||
|
if [ -s "$dump_name" ]; then
|
||||||
|
bk_log "Dumping database '${path##*/}' owned by ${user}@${host} (PostgreSQL) [Done]"
|
||||||
|
bk_log "Dump saved as: $dump_name"
|
||||||
|
bk_upload_file "$dump_name"
|
||||||
|
|
||||||
|
else
|
||||||
|
rm "$dump_name"
|
||||||
|
bk_err "Something went wrong. Dump size is 0 bytes. Removing $dump_name"
|
||||||
|
fi
|
||||||
|
}
|
@ -22,5 +22,6 @@ LIBRARY="${LIBRARY:-./lib}"
|
|||||||
. "$LIBRARY/backup.sh"
|
. "$LIBRARY/backup.sh"
|
||||||
. "$LIBRARY/source.sh"
|
. "$LIBRARY/source.sh"
|
||||||
. "$LIBRARY/uri.sh"
|
. "$LIBRARY/uri.sh"
|
||||||
. "$LIBRARY/handlers/tar.sh"
|
. "$LIBRARY/handlers/sources/tar.sh"
|
||||||
. "$LIBRARY/handlers/cp.sh"
|
. "$LIBRARY/handlers/sources/mysqldump.sh"
|
||||||
|
. "$LIBRARY/handlers/targets/cp.sh"
|
||||||
|
Loading…
Reference in New Issue
Block a user