NAME_REPO=borg
NAME_ARCHIVE=orgdir
-if [ -z "${BORG_PASSPHRASE}" ]; then
- stty -echo
- printf "Borg passphrase: "
- read passphrase
- stty echo
- printf "\n"
- export BORG_PASSPHRASE="${passphrase}"
-fi
-
if [ "$1" = "orgpull" ]; then
ls -1 "${PATH_BORGKEYS}/" | while read FILENAME; do
NAME_SERVER=$(echo "${FILENAME}" | sed 's/.*@//')
if ! ping -c1 -W2 "${NAME_SERVER}" > /dev/null 2>&1; then
echo "Cannot reach ${NAME_SERVER}, skipping."
- continue
+ continue
fi
REPO="${NAME_SERVER}:${NAME_REPO}"
- ARCHIVES=$(borg list "${REPO}") # separate step so we may fail early on bad passphrase
+ while true; do
+ set +e
+ ARCHIVES=$(borg list "${REPO}") # separate step so we may fail early on bad passphrase
+ RESULT=$?
+ set -e
+ if [ "${RESULT}" = "0" ]; then
+ break
+ elif [ "${RESULT}" != "2" ]; then
+ echo "Aborting due to unexpected ${NAME_BORGAPP} error."
+ exit 1
+ else
+ stty -echo
+ printf "Borg passphrase: "
+ read passphrase
+ stty echo
+ printf "\n"
+ export BORG_PASSPHRASE="${passphrase}"
+ fi
+ done
ARCHIVE=$(echo "${ARCHIVES}" | grep "${NAME_ARCHIVE}" | tail -1 | cut -f1 -d' ')
echo "Pulling archive: ${ARCHIVE}"
cd /
borg extract --verbose "${REPO}::${ARCHIVE}"
- break
+ break
done
fi