#!/bin/bash
+# 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
set -eE -o pipefail
;;
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
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 root@$host:/m /p/bkbackup
fi
exit $ret