#!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+# usage: $0 [restore]
if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
;;
esac
+# last checked 2022-03 version 23
+# https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html
if $restore; then
set -x
for ncdir in /var/www/ncexpertpath /var/www/ncninja; do
ncbase=${ncdir##*/}
ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --on ||: # might not be running
- rsync -ra /p/bkbackup/$ncbase/ root@$host:$ncdir || ret=$?
+ rsync -ravhi --numeric-ids /p/bkbackup/$ncbase/ root@$host:$ncdir || ret=$?
# https://docs.nextcloud.com/server/20/admin_manual/configuration_server/occ_command.html#maintenance-commands-label
ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:data-fingerprint
- ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --on
+ ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --off
done
- rsync -ravi /p/bkbackup/m root@$host:/
+ # the dovecot thing is not needed afaik, just a good practice.
+ ssh root@$host systemctl stop dovecot
+ rsync -ravi --numeric-ids /p/bkbackup/m root@$host:/
+ ssh root@$host systemctl start dovecot
exit 0
fi
ret=0
-if [[ $HOSTNAME == $MAIL_HOST ]]; then
+if [[ $HOSTNAME == "$MAIL_HOST" ]]; then
mkdir -p /p/bkbackup
for ncdir in /var/www/ncexpertpath /var/www/ncninja; do
- if [[ ! -d $ncdir ]]; then
- continue
- fi
ncbase=${ncdir##*/}
mkdir -p /p/bkbackup/$ncbase
ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --on
- rsync -ra --exclude=testignore --delete root@$host:$ncdir/{config,data,themes} /p/bkbackup/$ncbase || ret=$?
+ rsync --numeric-ids -ra --delete root@$host:$ncdir/{config,data,themes} /p/bkbackup/$ncbase || ret=$?
ssh root@$host sudo -u www-data php $ncdir/occ -q maintenance:mode --off
if (( ret )); then
echo "$0: error: failed rsync $ncdir"
ret=1
fi
done
- rsync -ra --delete root@$host:/m /p/bkbackup
+ rsync --numeric-ids -ra --delete \
+ --exclude md/expertpathologyreview.com/testignore \
+ --exclude md/amnimal.ninja/testignore \
+ root@$host:/m /p/bkbackup
fi
exit $ret