#!/bin/sh
+set -e
+
PATH_BORGKEYS="${HOME}/.config/borg/keys"
-PATH_ORG="${HOME}/org"
+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
- SERVER_NAME=$(echo "${FILENAME}" | sed 's/.*@//')
- if ping -c1 -W2 "${SERVER_NAME}" > /dev/null 2>&1; then
- break
- else
- echo "Cannot reach ${SERVER_NAME}, skipping."
+ NAME_SERVER=$(echo "${FILENAME}" | sed 's/.*@//')
+ if ! ping -c1 -W2 "${NAME_SERVER}" > /dev/null 2>&1; then
+ echo "Cannot reach ${NAME_SERVER}, skipping."
+ continue
fi
+ REPO="${NAME_SERVER}:${NAME_REPO}"
+ ARCHIVES=$(borg list "${REPO}") # separate step so we may fail early on bad passphrase
+ ARCHIVE=$(echo "${ARCHIVES}" | grep "${NAME_ARCHIVE}" | tail -1 | cut -f1 -d' ')
+ echo "Pulling archive: ${ARCHIVE}"
+ cd /
+ borg extract --verbose "${REPO}::${ARCHIVE}"
+ break
done
- REPO="${SERVER_NAME}:borg"
- ARCHIVE=$(borg list "${REPO}" | grep "${PATH_ORG}/" | tail -1 | cut -f1 -d' ')
- echo "Pulling archive: ${ARCHIVE}"
- cd /
- borg extract --verbose "${REPO}::${ARCHIVE}"
fi