cc25cecd3ac1bdc233614459b9f3c10f3bc2a9a0
[distro-setup] / bk-backup
1 #!/bin/bash
2
3 if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
4 shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
5 set -eE -o pipefail
6 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?. PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
7
8 # need root for rsync pull of file ownership/perms
9 [[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@"
10
11 host=bk.b8.nz
12 ret=0
13 source /a/bin/bash_unpublished/source-state
14
15 restore=false
16 case $1 in
17 restore)
18 restore=true
19 ;;
20 esac
21
22 if $restore; then
23 set -x
24 for ncdir in /var/www/ncexpertpath /var/www/ncninja; do
25 ncbase=${ncdir##*/}
26 ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --on ||: # might not be running
27 rsync -ra /p/bkbackup/$ncbase/ root@$host:$ncdir || ret=$?
28 # https://docs.nextcloud.com/server/20/admin_manual/configuration_server/occ_command.html#maintenance-commands-label
29 ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:data-fingerprint
30 ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --on
31 done
32 rsync -ravi /p/bkbackup/m root@$host:/
33 exit 0
34 fi
35
36 ret=0
37 if [[ $HOSTNAME == $MAIL_HOST ]]; then
38 mkdir -p /p/bkbackup
39 for ncdir in /var/www/ncexpertpath /var/www/ncninja; do
40 if [[ ! -d $ncdir ]]; then
41 continue
42 fi
43 ncbase=${ncdir##*/}
44 mkdir -p /p/bkbackup/$ncbase
45 ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --on
46 rsync -ra --exclude=testignore --delete root@$host:$ncdir/{config,data,themes} /p/bkbackup/$ncbase || ret=$?
47 ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --off
48 if (( ret )); then
49 echo "$0: error: failed rsync $ncdir"
50 ret=1
51 fi
52 done
53 rsync -ra --delete root@$host:/m /p/bkbackup
54 fi
55 exit $ret