X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=prof-backup;fp=prof-backup;h=f5b99bf3a65bd068dff0bc180fe1af33c7ff4b6d;hb=768363d8771edb9d9ed82425fa772d77b90139c0;hp=0000000000000000000000000000000000000000;hpb=62c4ef27d7ce99c442339d4868aa75b2edadfb8f;p=distro-setup diff --git a/prof-backup b/prof-backup new file mode 100755 index 0000000..f5b99bf --- /dev/null +++ b/prof-backup @@ -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