#!/bin/bash set -e set -o pipefail site=${1#/srv/} site=${site%/} case "$site" in '' | */* | .*) exit 1 ;; esac [ -d /srv/"$site" ] db_host=$(wordpress-config-info "$site" | jq -r .db_host) db_name=$(wordpress-config-info "$site" | jq -r .db_name) [ "$db_name" ] [ "$REMOTE_HOST" ] remote_host=$REMOTE_HOST NO_ACT=y html_dir=/./srv/$site/public_html conf_file=/./etc/apache2/sites-available/$site.conf [ -d "$html_dir" ] [ -f "$conf_file" ] installer() { echo mysqlrestore "$1" } installer_source_code() { echo '#!/bin/sh' declare -f installer echo "installer \"$1\"" } do_rsync() { ( set -x rsync ${NO_ACT:+ -nv} -u -aRi --delete --partial "$conf_file" "$html_dir" "$remote_host":/"$target_dir" ) } do_mysqldump() { ( case "$NO_ACT" in '') of=/srv/$site/wordpress-database~"$(date -Ins)".sql.gz ;; * ) of=/dev/null ;; esac oftest=/srv/$site/wordpress-database~"$(date -Ins)".sql.gz printf '%s\n' "$oftest" >&2 installer_source_code "$oftest" >&2 if [ "$use_rsync" ] then set -x dumpfile=$(mktemp -p "$XDG_RUNTIME_DIR") || dumpfile=$(mktemp) ssh "$db_host" -- mysqldump "$db_name" | gzip -c > "$dumpfile" rsync --ignore-existing "$dumpfile" "$remote_host":"$of" rm "$dumpfile" else set -x mysqldump "$db_name" | gzip -c | ssh "$remote_host" dd conv=notrunc "of=$of" fi ) } use_rsync=y do_rsync do_mysqldump