lots of fixes, automation for bitfolk
[distro-setup] / bk-backup
index cc25cecd3ac1bdc233614459b9f3c10f3bc2a9a0..24fa10590f61b05ba9e1bc3372c6d29f3b051d0c 100755 (executable)
--- a/bk-backup
+++ b/bk-backup
@@ -1,5 +1,7 @@
 #!/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
@@ -19,17 +21,22 @@ case $1 in
     ;;
 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
 
@@ -37,19 +44,16 @@ ret=0
 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