dockerfiles/rsync/entrypoint.sh

67 lines
1.4 KiB
Bash
Raw Normal View History

2022-08-22 12:19:18 +02:00
#!/bin/sh
set -e
# check settings
HOST="${HOST:-${PLUGIN_HOST}}"
if [ -z "$HOST" ]; then
echo "'host' must be specified"
exit 1
fi
USER="${USER:-${PLUGIN_USER:-root}}"
SSH_KEY="${SSH_KEY:-${PLUGIN_KEY}}"
if [ -z "$SSH_KEY" ]; then
echo "ssh_key must be specified"
exit 1
fi
2022-09-13 10:27:47 +02:00
SSH_KEY_CERT="${SSH_KEY_CERT:-${PLUGIN_KEY_CERT}}"
2022-08-22 12:19:18 +02:00
KNOWN_HOSTS="${KNOWN_HOSTS:=${PLUGIN_KNOWN_HOSTS}}"
2022-09-13 10:27:47 +02:00
SOURCES="${SOURCES:-${PLUGIN_SOURCES}}"
SOURCES=$(echo "$SOURCES" | tr ',' ' ')
if [ -z "$SOURCES" ]; then
echo "specify at least one source"
2022-08-22 12:19:18 +02:00
exit 1
fi
TARGET="${TARGET:-${PLUGIN_TARGET}}"
if [ -z "$TARGET" ]; then
echo "'target' must be specified"
exit 1
fi
ARGS=${ARGS:-${PLUGIN_ARGS}}
# prepare SSH
mkdir -p "$HOME/.ssh"
2022-09-13 10:27:47 +02:00
keyfile="$HOME/.ssh/user_key"
2022-08-22 12:19:18 +02:00
echo "$SSH_KEY" > "$keyfile"
chmod 0600 "$keyfile"
2022-09-13 10:27:47 +02:00
echo 'Host *' > "$HOME/.ssh/config"
echo " IdentityFile $keyfile" >> "$HOME/.ssh/config"
if [ -n "${SSH_KEY_CERT}" ]; then
certfile="$HOME/.ssh/user_key-cert.pub"
echo "${SSH_KEY_CERT}" > "$certfile"
echo " CertificateFile $certfile" >> "$HOME/.ssh/config"
fi
2022-08-22 12:19:18 +02:00
known_hosts_file="${HOME}/.ssh/known_hosts"
[ -n "${KNOWN_HOSTS}" ] && echo "${KNOWN_HOSTS}" >> "$known_hosts_file"
[ -f "${known_hosts_file}" ] && chmod 0600 "$known_hosts_file"
# run rsync
# shellcheck disable=SC2086
2022-09-13 10:27:47 +02:00
for SOURCE in $SOURCES; do
echo "copying '$SOURCE' to '$TARGET'"
rsync $ARGS "${SOURCE}" "${USER}"@"${HOST}":"${TARGET}"
done