various bug fixes
[distro-setup] / btrbk-run
old mode 100755 (executable)
new mode 100644 (file)
index 4762b2f..b753b5d
--- a/btrbk-run
+++ b/btrbk-run
@@ -24,7 +24,11 @@ trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 usage() {
   cat <<'EOF'
 btrbk-run [OPTIONS]
-usually -t TARGET_HOST
+usually -t TARGET_HOST or -s SOURCE_HOST
+
+Note, at source location, intentionally not executable, run and read
+install-my-scripts.
+
 EOF
   echo "top of script file:"
   sed -n '1,/^[# ]*end command line/{p;b};q' "$0"
@@ -53,7 +57,7 @@ if [[ -s $default_args_file ]]; then
   set -- $(< $default_args_file) "$@"
 fi
 
-temp=$(getopt -l help cl:m:npt:vh "$@") || usage 1
+temp=$(getopt -l help cl:m:nps:t:vh "$@") || usage 1
 eval set -- "$temp"
 while true; do
   case $1 in
@@ -87,7 +91,7 @@ if [[ -s $default_args_file ]]; then
   sleep 5
 fi
 
-if [[ -v targets && -v source ]]; then
+if [[ -v targets && $source ]]; then
   echo "$0: error: -t and -s are mutually exclusive" >&2
   exit 1
 fi
@@ -95,7 +99,7 @@ fi
 echo -e "$0: options: conf_only=$conf_only\ndry_run=$dry_run\nrate_limit=$rate_limit\nverbose=$verbose\ncmd_arg=$cmd_arg"
 
 # set default targets
-if [[ ! -v targets && ! -v source ]]; then
+if [[ ! -v targets && ! $source ]]; then
   case $HOSTNAME in
     x2|kw)
       if [[ $HOSTNAME == "$MAIL_HOST" ]]; then
@@ -124,7 +128,7 @@ if [[ -v targets ]]; then
   echo "targets: ${targets[*]}"
 fi
 
-if [[ -v source ]]; then
+if [[ $source ]]; then
   echo "source: $source"
 fi
 
@@ -222,7 +226,7 @@ EOF
 
 
 
-for tg in ${targets[@]:-localhost}; do
+for tg in ${targets[@]:-$HOSTNAME}; do
   # for an initial run, btrbk requires the dir to exist.
   ssh root@$tg mkdir -p /mnt/root/btrbk
 done
@@ -232,9 +236,9 @@ done
 vol=/mnt/root
 for m in ${mountpoints[@]}; do
   sub=${m##*/}
-  if [[ -v source ]]; then
+  if [[ $source ]]; then
     cat >>/etc/btrbk.conf <<EOF
-volume ssh://$source$vol/btrbk
+volume ssh://$source$vol
 subvolume $sub
 target send-receive $vol/btrbk
 EOF
@@ -265,18 +269,18 @@ fi
 if $dry_run; then
   m btrbk -v -n $cmd_arg
 elif [[ $cmd_arg == archive ]]; then
-  if [[ -v source ]]; then
+  if [[ $source ]]; then
     m btrbk $verbose_arg $progress_arg $cmd_arg ssh://$source$vol $vol
   else
     for tg in ${targets[@]}; do
       m btrbk $verbose_arg $progress_arg $cmd_arg $vol ssh://$tg$vol
     done
   fi
-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.
-  m btrbk $verbose_arg $progress_arg $cmd_arg
+  exit 0
 fi
+# -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.
+m btrbk $verbose_arg $progress_arg $cmd_arg
 
 # if we have it, sync to systems which don't
 if mountpoint $rsync_mountpoint >/dev/null; then
@@ -294,12 +298,13 @@ if mountpoint $rsync_mountpoint >/dev/null; then
   done
 fi
 
-if ! $dry_run; then
-  # note, targets will be empty if source is set.
-  m $script_dir/mount-latest-remote ${targets[@]}
+PATH=$script_dir:$PATH
+if [[ $source ]]; then
+  m mount-latest-subvol
+else
+  m mount-latest-remote ${targets[@]}
 fi
 
-
 # todo: move variable data we don't care about backing up
 # to /nocow and symlink it.