46 lines
1.2 KiB
Bash
46 lines
1.2 KiB
Bash
#!/usr/bin/env bashio
|
|
# shellcheck shell=bash
|
|
|
|
set -e
|
|
|
|
PRIVATE_KEY_FILE=$(bashio::config 'private_key_file')
|
|
if [ ! -f "$PRIVATE_KEY_FILE" ]; then
|
|
bashio::log.info 'Generate keypair'
|
|
|
|
mkdir -p "$(dirname "$PRIVATE_KEY_FILE")"
|
|
ssh-keygen -t rsa -b 4096 -f "$PRIVATE_KEY_FILE" -N ''
|
|
|
|
bashio::log.info "Generated key-pair in $PRIVATE_KEY_FILE"
|
|
else
|
|
bashio::log.info "Use private key from $PRIVATE_KEY_FILE"
|
|
fi
|
|
|
|
HOST=$(bashio::config 'remote_host')
|
|
USERNAME=$(bashio::config 'username')
|
|
FOLDERS=$(bashio::config 'folders')
|
|
REMOTE_FOLDER=$(bashio::config 'remote_folder')
|
|
|
|
if bashio::config.has_value 'remote_port'; then
|
|
PORT=$(bashio::config 'remote_port')
|
|
bashio::log.info "Use port $PORT"
|
|
else
|
|
PORT=22
|
|
fi
|
|
|
|
if bashio::config.has_value 'options'; then
|
|
OPTIONS=$(bashio::config 'options')
|
|
bashio::log.info "Use options $OPTIONS"
|
|
else
|
|
OPTIONS='-archive --recursive --compress --delete --prune-empty-dirs'
|
|
fi
|
|
|
|
for folder in $FOLDERS; do
|
|
|
|
bashio::log.info "Sync $folder -> ${REMOTE_FOLDER}"
|
|
# shellcheck disable=SC2086
|
|
rsync ${OPTIONS} \
|
|
-e "ssh -p ${PORT} -i ${PRIVATE_KEY_FILE} -oStrictHostKeyChecking=no" \
|
|
"$folder" "${USERNAME}@${HOST}:${REMOTE_FOLDER}"
|
|
done
|
|
|
|
bashio::log.info "Synced all folders" |