104 lines
2.4 KiB
Bash
Executable File
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
|