backup-docker/rem.sh

104 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
set -o xtrace
set -u
set -o pipefail
usage () {
printf " Usage: rem.sh <url>\n"
printf " option: f <folder> (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