From dd072f69af877ce630b43ebddc8104527363d34a Mon Sep 17 00:00:00 2001 From: Christoph Date: Wed, 1 Jan 2025 14:21:30 +0100 Subject: [PATCH] borg2-extract-archiv.sh: support running the script on backup host. --- borg2-extract-archiv.sh | 116 +++++++++++++++++++++++----------------- 1 file changed, 67 insertions(+), 49 deletions(-) diff --git a/borg2-extract-archiv.sh b/borg2-extract-archiv.sh index 279e488..d3485fc 100755 --- a/borg2-extract-archiv.sh +++ b/borg2-extract-archiv.sh @@ -293,6 +293,9 @@ else while [[ "X${FQHN_BORG2_HOSTNAME}" = "X" ]]; do echononl "Full borg2 hostname: " read FQHN_BORG2_HOSTNAME + if [[ ${FQHN_BORG2_HOSTNAME} =~ ^127 ]] || [[ "${FQHN_BORG2_HOSTNAME,,}" =~ "localhost" ]] ; then + break + fi if [[ "X${FQHN_BORG2_HOSTNAME}" = "X" ]]; then echo -e "\n\t\033[33m\033[1mFull qualified hostname is reqired\033[m\n" fi @@ -325,7 +328,7 @@ else fi done fi -BORG_REPO="${FQPN_BORG2_REPO%%.*}" +BORG_REPO="${FQPN_BORG2_REPO}" LIST_OF_FILES_TO_RESTORE= @@ -364,50 +367,58 @@ else fi -SSH_USER="" -echo -e "\033[32m--\033[m" -echo "" -echo "Specify the ssh user to connect to the Borg2 host '${BORG_HOST}'." -echo "" -echononl "SSH user [${_SSH_USER}]: " -read SSH_USER -if [[ "X${SSH_USER}" = "X" ]]; then - SSH_USER="${_SSH_USER}" +if [[ ! ${BORG_HOST} =~ ^127 ]] && [[ ! ${BORG_HOST,,} =~ localhost ]] ; then + SSH_USER="" + echo -e "\033[32m--\033[m" + echo "" + echo "Specify the ssh user to connect to the Borg2 host '${BORG_HOST}'." + echo "" + echononl "SSH user [${_SSH_USER}]: " + read SSH_USER + if [[ "X${SSH_USER}" = "X" ]]; then + SSH_USER="${_SSH_USER}" + fi + + + SSH_PORT="" + echo -e "\033[32m--\033[m" + echo "" + echo "Specify the ssh port to connect to the Borg2 host '${BORG_HOST}'." + echo "" + while [[ "X${SSH_PORT}" = "X" ]]; do + echononl "SSH user [${_SSH_PORT}]: " + read SSH_PORT + if [[ "X${SSH_PORT}" = "X" ]]; then + SSH_PORT="${_SSH_PORT}" + fi + done + + + BORG_RSH="" + echo -e "\033[32m--\033[m" + echo "" + echo "Specify the ssh command which is used to connect to the Borg2 host '${BORG_HOST}'." + echo "" + while [[ "X${BORG_RSH}" = "X" ]]; do + echononl "SSH command [${_BORG_RSH}]: " + read BORG_RSH + if [[ "X${BORG_RSH}" = "X" ]]; then + BORG_RSH="${_BORG_RSH}" + fi + done + + export BORG_RSH fi - -SSH_PORT="" -echo -e "\033[32m--\033[m" -echo "" -echo "Specify the ssh port to connect to the Borg2 host '${BORG_HOST}'." -echo "" -while [[ "X${SSH_PORT}" = "X" ]]; do - echononl "SSH user [${_SSH_PORT}]: " - read SSH_PORT - if [[ "X${SSH_PORT}" = "X" ]]; then - SSH_PORT="${_SSH_PORT}" - fi -done - - -BORG_RSH="" -echo -e "\033[32m--\033[m" -echo "" -echo "Specify the ssh command which is used to connect to the Borg2 host '${BORG_HOST}'." -echo "" -while [[ "X${BORG_RSH}" = "X" ]]; do - echononl "SSH command [${_BORG_RSH}]: " - read BORG_RSH - if [[ "X${BORG_RSH}" = "X" ]]; then - BORG_RSH="${_BORG_RSH}" - fi -done - blank_line echo -e "\033[32m--\033[m" echo "" +export BORG_HOST +export BORG_PASSPHRASE +export BORG_REPO + # List Borg Backups # ( @@ -431,9 +442,6 @@ done echo -e " \033[33m---------------------------------------------\033[m" echo "" -export BORG_PASSPHRASE -export BORG_REPO -export BORG_RSH _BORG_RESTORE_PATH="/data/RESTORE/$(basename "${BORG_REPO}")/${BORG_BACKUP_ID}" @@ -634,17 +642,27 @@ echo -e "----------------------------------------------------------------------- blank_line + + echo " Restore from archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to" echononl " '${BORG_RESTORE_PATH}'.." -#echononl "Restore from archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to '${BORG_RESTORE_PATH}'.." - -borg2 --remote-path borg2 --repo ${BORG_URL} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE} > "${log_file}" 2>&1 - -if [[ $? -gt 0 ]] ; then - echo_failed - error "$(cat "${log_file}")" +if [[ ${FQHN_BORG2_HOSTNAME} =~ ^127 ]] || [[ "${FQHN_BORG2_HOSTNAME,,}" =~ "localhost" ]] ; then + borg2 --remote-path borg2 --repo ${BORG_REPO} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE} > "${log_file}" 2>&1 + if [[ $? -gt 0 ]] ; then + echo_failed + error "$(cat "${log_file}")" + else + echo_ok + fi else - echo_ok + borg2 --remote-path borg2 --repo ${BORG_URL} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE} > "${log_file}" 2>&1 + if [[ $? -gt 0 ]] ; then + echo_failed + error "$(cat "${log_file}")" + else + echo_ok + fi + fi blank_line