NAME_ARCHIVE=orgdir
if [ "$1" = "orgpull" ]; then
- ls -1 "${PATH_BORGKEYS}/" | while read FILENAME; do
+ PATH_PIPE="/tmp/pipe_$(date +'%s')"
+ mkfifo "${PATH_PIPE}"
+ ls -1 "${PATH_BORGKEYS}/" > "${PATH_PIPE}" &
+ while read FILENAME; do
NAME_SERVER=$(echo "${FILENAME}" | sed 's/.*@//')
- if ! ping -c1 -W2 "${NAME_SERVER}" > /dev/null 2>&1; then
+ if ping -c1 -W2 "${NAME_SERVER}" > /dev/null 2>&1; then
+ break
+ else
echo "Cannot reach ${NAME_SERVER}, skipping."
- continue
fi
- REPO="${NAME_SERVER}:${NAME_REPO}"
- while true; do
- if [ -z "${BORG_PASSPHRASE}" ]; then
- stty -echo
- printf "Borg passphrase: "
- read passphrase
- stty echo
- printf "\n"
- export BORG_PASSPHRASE="${passphrase}"
- fi
- 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
- export BORG_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
+ done < "${PATH_PIPE}"
+ rm "${PATH_PIPE}"
+ REPO="${NAME_SERVER}:${NAME_REPO}"
+ while true; do
+ if [ -z "${BORG_PASSPHRASE}" ]; then
+ stty -echo
+ printf "Borg passphrase: "
+ read passphrase
+ stty echo
+ printf "\n"
+ export BORG_PASSPHRASE="${passphrase}"
+ fi
+ 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
+ export BORG_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
fi