#!/bin/bash set -o xtrace set -u set -o pipefail usage () { printf " Usage: rem.sh \n" printf " option: f (local folder contents to send to remote)\n" printf " option: b (send backup scripts located in ../backup to remote)\n" printf " option: d (send server docker spec located in ../docker to remote)\n" printf " option: s (send server certificates located in ../srvtls to remote)\n" printf " option: c (send server config located in ../config to remote)\n" printf " option: a (options d,s,c combined - complete server, excluding scripts)\n" } FOLDER="_vols_" SCRIPTS="false" CERTS="false" DOCKER="false" CONFIG="false" OUTPUT="" while getopts ':f:bdsca' OPT; do case $OPT in b) SCRIPTS="true" OUTPUT="${OUTPUT} Option: SEND BACKUP SCRIPTS\n";; f) FOLDER="${OPTARGS}" OUTPUT="${OUTPUT} Option: SPECIFY SOURCE FOLDER\n";; s) CERTS="true" OUTPUT="${OUTPUT} Option: SEND CERTIFICATES\n";; d) DOCKER="true" OUTPUT="${OUTPUT} Option: SEND DOCKER SPEC\n";; c) CONFIG="true" OUTPUT="${OUTPUT} Option: SEND CONFIG SPEC\n";; a) CONFIG="true"; DOCKER="true"; CERTS="true"; OUTPUT="${OUTPUT} Option: SEND ALL (BACKUP,CERTS,DOCKER,CONFIG\n";; \?) usage; exit;; esac done shift $((OPTIND -1)) REMOTEURL="" if [[ -v 1 ]]; then REMOTEURL="${1}" else echo "Missing remote address: user@url" exit 1 fi REMOTEDIR="_vols_" sudo ssh "${REMOTEURL}" << EOT || exit 1 echo "Local user: $USER" echo "Remote user: \$USER" pushd /srv/backup || exit 1 if [[ -d _vols_ ]]; then if [[ -n "$(ls -A _vols_)" ]]; then TF="$(stat -c "%W" "${REMOTEDIR}")" mv "${REMOTEDIR}" "${REMOTEDIR}\${TF}" || exit 1 fi fi mkdir -p "${REMOTEDIR}" || exit 1 popd || exit 1 EOT pushd "${FOLDER}" || exit 1 sudo scp *.tar.bz2 "${REMOTEURL}:/srv/backup/_vols_" || exit 1 popd || exit 1 if [[ $SCRIPTS == "true" ]]; then pushd "../backup" || exit 1 sudo scp *.sh "${REMOTEURL}:/srv/backup" || exit 1 popd || exit 1 fi if [[ $CERTS == "true" ]]; then pushd "../srvtls" || exit 1 sudo scp * "${REMOTEURL}:/srv/srvtls" || exit 1 popd || exit 1 fi if [[ $DOCKER == "true" ]]; then pushd "../docker" || exit 1 sudo scp * .env "${REMOTEURL}:/srv/docker" || exit 1 popd || exit 1 fi if [[ $CONFIG == "true" ]]; then pushd "../config" || exit 1 sudo scp * .env "${REMOTEURL}:/srv/config" || exit 1 popd || exit 1 fi set +o xtrace