various minor improvements
[distro-setup] / btrbk-run
index c226997d1a147d2cb1b0f01f83d347ee4fd760c5..485c7f579a2d5b54a0ee8c438315eb5c65094d94 100755 (executable)
--- a/btrbk-run
+++ b/btrbk-run
@@ -38,6 +38,7 @@ while true; do
     case $1 in
         -c) conf_only=true; shift ;;
         -n) dry_run=true; dry_run_arg=-n; shift ;;
+        # btrbk arg: Resume only. Skips snapshot creation.
         -r) resume_arg=-r; shift ;;
         -t) IFS=, targets=($2); shift 2 ;;
         -h|--help) usage ;;
@@ -52,7 +53,7 @@ read primary <<<"$@"
 rsync-dirs() {
     local host=$1
     local path=$2
-    rsync $dry_run_arg -ahi --relative --delete "$path" "root@$host:/"
+    rsync $dry_run_arg -ahi --relative --delete "$path" "root@$host:/"
 }
 
 vol-conf() {
@@ -70,15 +71,26 @@ tg-conf() {
 target send-receive ssh://$tg$vol/btrbk
 EOF
 }
-
+m() { printf "%s\n" "$*";  "$@"; }
 
 
 if ! which btrbk &>/dev/null; then
     echo "$0: error: no btrbk binary found"
 fi
 
+if [[ $- == *i* ]]; then
+    progress_arg=--progress
+fi
+
 cat >/etc/btrbk.conf <<'EOF'
 ssh_identity /root/.ssh/id_rsa
+# Just a guess that local7 is a good facility to pick.
+# It's a bit odd that the transaction log has to be logged to
+# a file or syslog, while other output is sent to std out.
+# The man does not mention a way for them to be together, but
+# I dunno if setting a log level like warn might also output
+# transaction info.
+transaction_syslog local7
 
 # so we only run one at a time
 lockfile                   /var/lock/btrbk.lock
@@ -106,9 +118,10 @@ EOF
 
 # note q is owned by root:1000
 # note p is owned 1000:1000 and chmod 700
-mountpoints=(/q)
-if awk '{print $2}' /etc/fstab | grep -xF /p &>/dev/null; then
-    mountpoints+=(/p)
+mountpoints=(/a)
+qmnt=/q
+if awk '{print $2}' /etc/fstab | grep -xF $qmnt &>/dev/null; then
+    mountpoints+=($qmnt)
 fi
 
 # if our mountpoints are from stale snapshots,
@@ -174,11 +187,11 @@ if $conf_only; then
 fi
 
 if $dry_run; then
-    btrbk -n $resume_arg run
+    btrbk -n $resume_arg run
 else
     # -q and just using the syslog option seemed nice,
     # but it doesn't show when a send has a parent and when it doesn't.
-    btrbk $resume_arg run
+    m btrbk $progress_arg $resume_arg run
 fi
 
 # if we have /p, rsync to targets without /p
@@ -198,7 +211,7 @@ if mountpoint /p >/dev/null; then
 fi
 
 if ! $dry_run; then
-    $script_dir/mount-latest-remote ${targets[@]}
+    $script_dir/mount-latest-remote ${targets[@]}
 fi