be safer, keep more leafs around
[distro-setup] / switch-mail-host
index 08e74fc443f771edcbd625547f9eb796b9c08b70..651c96ecc3a92d00e37cd50fc189d8a735e75db6 100644 (file)
@@ -41,7 +41,7 @@ err-cleanup() {
   fi
 }
 
-pre="$script_name:"
+pre="${SSH_CLIENT:+$HOSTNAME} $script_name:"
 m() { printf "$pre %s\n"  "$*"; "$@"; }
 e() { printf "$pre %s\n"  "$*"; }
 err() { echo "$pre ERROR: $*" >&2; }
@@ -196,7 +196,7 @@ e "On $new_host: umounting /m and /o, checking emacs"
   cat <<'EOF'
 set -eE
 if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
-  bufs="$(sudo -u iank emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
+  bufs="$(sudo -u iank env XDG_RUNTIME_DIR=/run/user/1000 emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
   if [[ $bufs ]]; then
     echo "error: on $HOSTNAME, unsaved emacs files: $bufs" >&2
     exit 1
@@ -204,11 +204,11 @@ if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
 fi
 EOF
   if ! $host2_only; then
-    cat <<'EOF'
+    cat <<EOF
 for dir in m o; do
-  if mountpoint -q /$dir; then
-    echo On $new_host: umount /$dir
-    umount /$dir
+  if mountpoint -q /\$dir; then
+    echo On $new_host: umount /\$dir
+    umount /\$dir
   fi
 done
 EOF
@@ -217,7 +217,7 @@ EOF
 
 $old_shell bash -s <<'EOF'
 if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
-  bufs="$(sudo -u iank emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
+  bufs="$(sudo -u iank env XDG_RUNTIME_DIR=/run/user/1000 emacsclient --eval "$(cat /a/bin/ds/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
   if [[ $bufs ]]; then
     echo "error: on $HOSTNAME, unsaved emacs files: $bufs" >&2
     exit 1
@@ -253,7 +253,7 @@ if ! $mail_only; then
 fi
 
 if $host2_only; then
-  if [[ $old_hostname != "$MAIL_HOST" ]]; then
+  if [[ $old_hostname != "$MAIL_HOST" && $old_hostname != kd ]]; then
     m $old_shell systemctl --now disable btrbk.timer
   fi
   m $new_shell systemctl --now enable btrbk.timer
@@ -271,7 +271,7 @@ fi
 m $new_shell killall -q emacs ||:
 
 e Running main btrbk
-m btrbk-run -v $bbk_args $incremental_arg -m /o || ret=$?
+m btrbk-run -v --fast $bbk_args $incremental_arg -m /o || ret=$?
 if (( ret )); then
   bang="$(printf "$(tput setaf 5)█$(tput sgr0)%.0s" 1 2 3 4 5 6 7)"
   e $bang failed btrbk of /o. restoring old host as primary
@@ -279,6 +279,10 @@ if (( ret )); then
   exit $ret
 fi
 
+# new system is usable at this point
+printf "$(tput setaf 5 2>/dev/null ||:)█$(tput sgr0 2>/dev/null||:)%.0s" $(eval echo "{1..${COLUMNS:-60}}")
+echo
+
 # once I accidentally accepted incoming mail on old host. I used this script to copy over that mail:
 #
 # die=false; for d in o.leaf.2021-05-29T10:02:08-0400/m/{4e,md,4e2}/{,l/}!(*myarchive)/new; do if $die; then break; fi; find $d -type f -mtime -5 | while read -r f; do dir="${f%new/*}"; dir="btrbk/o.20210530T000011-0400/${dir#*/}"; fname="${f##*/}"; [[ -e $dir/new/$fname || -e $dir/cur/$fname ]] && continue; if ! e cp -a $f /${dir#*/*/}new; then echo failed cp; die=true; break; fi ; done; done