host info updates
[distro-setup] / prof-backup
1 #!/bin/bash
2 # I, Ian Kelling, follow the GNU license recommendations at
3 # https://www.gnu.org/licenses/license-recommendations.en.html. They
4 # recommend that small programs, < 300 lines, be licensed under the
5 # Apache License 2.0. This file contains or is part of one or more small
6 # programs. If a small program grows beyond 300 lines, I plan to switch
7 # its license to GPL.
8
9 # Copyright 2024 Ian Kelling
10
11 # Licensed under the Apache License, Version 2.0 (the "License");
12 # you may not use this file except in compliance with the License.
13 # You may obtain a copy of the License at
14
15 # http://www.apache.org/licenses/LICENSE-2.0
16
17 # Unless required by applicable law or agreed to in writing, software
18 # distributed under the License is distributed on an "AS IS" BASIS,
19 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 # See the License for the specific language governing permissions and
21 # limitations under the License.
22
23
24 # We setup kd as a server which runs profanity, because profanity
25 # contains important state which it does not save to disk: the most
26 # recent read message in each chat room and for private messages.
27 # To do this, uses data directories in /d/p.
28
29 # However, if we need to take kd down for maintenance, we can run
30 # profanity on HOST2 with data directory in /p. To do this, stop
31 # profanity, run prof-backup, and then systemctl start profanity from
32 # HOST2, and then run prof. To connect from other machines, run prof
33 # HOST2_SSH_NAME. To have the profanity service stopped and started with
34 # switch-mail-host, do touch /p/profanity-here. To do the reverse,
35 #
36 # systemctl stop profanity
37 # rsync /p/profanity{,-config} kdwg.b8.nz:/d/p
38 # ssh root@kdwg.b8.nz systemctl --now enable profanity
39
40 if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi
41 source /a/bin/bash-bear-trap/bash-bear
42
43 source /a/bin/bash_unpublished/source-state
44 if [[ ! $HOSTNAME ]]; then
45 HOSTNAME=$(cat /etc/hostname)
46 fi
47 if [[ $HOSTNAME != "$HOST2" ]]; then
48 exit 0
49 fi
50
51 case $HOSTNAME in
52 kd)
53 if systemctl --quiet is-active profanity; then
54 rsync /d/p/profanity{,-config} /p
55 fi
56 ;;
57 *)
58 if ssh iank@b8.nz systemctl --user --quiet is-active profanity; then
59 rsync -a b8.nz:/d/p/profanity{,-config} /p
60 fi
61 ;;
62 esac