fixes and qd for better source subvol error repo
[distro-setup] / switch-mail-host
index 651c96ecc3a92d00e37cd50fc189d8a735e75db6..0132819ba491fddd6299c7bca20d357d5d4149ee 100644 (file)
@@ -10,6 +10,10 @@ Turn off mail receiving on OLD_HOST, run btrbk to move mail to NEW_HOST,
 turn on mail receiving on NEW_HOST.  Assumes we want to move all
 filesystems unless passing -o.
 
+-a         Avoid snapshot /a, /q, and similar. If we haven't
+           made any changes in the last hour, there is no
+           need to snapshot anything but /o, and we will
+           just do that once.
 -i         Disallow incremental backup.
 -o         Only btrbk /o, instead of all filesystems.
 --force    Run even though our local state does not say that MAIL_HOST is
@@ -57,11 +61,12 @@ fi
 mail_only=false
 host2_only=false
 force=false
-mp_args="-m /o,/q,/a"
-temp=$(getopt -l force,help ioh "$@") || usage 1
+mp_args="-m /o,/a,/ar,/q,/qd,/qr"
+temp=$(getopt -l force,help aioh "$@") || usage 1
 eval set -- "$temp"
 while true; do
   case $1 in
+    -a) snapshot_arg=resume ;;
     --force) force=true ;;
     -i) incremental_arg="-i" ;;
     -o)
@@ -138,18 +143,19 @@ esac
 if $mail_only; then
   mp_args="-m /o"
 elif $host2_only; then
-  mp_args="-m /a,/ar,/q,/qr"
+  mp_args="-m /a,/ar,/q,/qd,/qr"
 fi
 
-
-if $host2_only; then
-  if [[ $old_hostname != "$HOST2" ]]; then
-    err "\$old_hostname($old_hostname) != \$HOST2($HOST2). Rerun with --force if you really want this."
+if ! $force; then
+  if $host2_only; then
+    if [[ $old_hostname != "$HOST2" ]]; then
+      err "\$old_hostname($old_hostname) != \$HOST2($HOST2). Rerun with --force if you really want this."
+      exit 1
+    fi
+  elif [[ $old_hostname != "$MAIL_HOST" ]]; then
+    err "\$old_hostname($old_hostname) != \$MAIL_HOST($MAIL_HOST). Rerun with --force if you really want this."
     exit 1
   fi
-elif [[ $old_hostname != "$MAIL_HOST" ]] && ! $force; then
-  err "\$old_hostname($old_hostname) != \$MAIL_HOST($MAIL_HOST). Rerun with --force if you really want this."
-  exit 1
 fi
 
 if [[ ! $new_host || ! $old_host ]]; then
@@ -241,8 +247,8 @@ EOF
 
 
 e Running initial btrbk
-if ! m btrbk-run -v $bbk_args $incremental_arg $mp_args; then
-  ret=$?
+m btrbk-run -v $bbk_args $incremental_arg $mp_args $snapshot_arg || ret=$?
+if (( ret )); then
   err "failed initial btrbk"
   exit $ret
 fi
@@ -260,8 +266,8 @@ if $host2_only; then
   exit 0
 fi
 
-if ! m $old_shell /a/exe/primary-setup $new_hostname; then
-  ret=$?
+m $old_shell /a/exe/primary-setup $new_hostname || ret=$?
+if (( ret )); then
   err "failed \$old_shell primary-setup \$new_hostname. fix and rerun $script_name"
   exit $ret
 fi
@@ -291,8 +297,8 @@ echo
 #
 # shopt -s nullglob; find . -type f -mtime -2 | while read -r f; do a=( /m/4e/Sent/cur/${f%,*}* ); if (( ${#a[@]} )); then e exists $a; else m cp -a $f /m/4e/Sent/cur; fi; done
 
-if ! m $new_shell /a/exe/primary-setup localhost; then
-  ret=$?
+m $new_shell /a/exe/primary-setup localhost || ret=$?
+if (( ret )); then
   err "failed final primary-setup, just fix and rerun: $new_shell /a/exe/primary-setup localhost"
   exit $ret
 fi