mostly profanity and fixes
[distro-setup] / prof-backup
diff --git a/prof-backup b/prof-backup
new file mode 100755 (executable)
index 0000000..f5b99bf
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# We setup kd as a server which runs profanity, because profanity
+# contains important state which it does not save to disk: the most
+# recent read message in each chat room and for private messages.
+# To do this, uses data directories in /d/p.
+
+# However, if we need to take kd down for maintenance, we can run
+# profanity on HOST2 with data directory in /p. To do this, stop
+# profanity, run prof-backup, and then systemctl start profanity from
+# HOST2, and then run prof. To connect from other machines, run prof
+# HOST2_SSH_NAME. To have the profanity service stopped and started with
+# switch-mail-host, do touch /p/profanity-here. To do the reverse,
+#
+# systemctl stop profanity
+# rsync /p/profanity{,-config} kdwg.b8.nz:/d/p
+# ssh root@kdwg.b8.nz systemctl --now enable profanity
+
+if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi
+source /a/bin/errhandle/err
+
+source /a/bin/bash_unpublished/source-state
+if [[ $HOSTNAME != "$HOST2" ]]; then
+  exit 0
+fi
+
+case $HOSTNAME in
+  kd)
+    if systemctl --quiet is-active profanity; then
+      rsync /d/p/profanity{,-config} /p
+    fi
+    ;;
+  *)
+    if ssh b8.nz systemctl --quiet is-active profanity; then
+      rsync -a b8.nz:/d/p/profanity{,-config} /p
+    fi
+    ;;
+esac