home · contact · privacy
Fix borgplom script;
authorChristian Heller <c.heller@plomlompom.de>
Tue, 11 Mar 2025 22:21:36 +0000 (23:21 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 11 Mar 2025 22:21:36 +0000 (23:21 +0100)
testing/home/desktop/.local/bin/borgplom

index 277fbb30e2e058b7f67e89e10822dd27fe3742ef..4010829014d873c7f3acc6a98e16a1ce640b6ea0 100755 (executable)
@@ -6,39 +6,44 @@ NAME_REPO=borg
 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