bug fix
authorIan Kelling <iank@fsf.org>
Tue, 2 Apr 2019 17:25:51 +0000 (13:25 -0400)
committerIan Kelling <iank@fsf.org>
Tue, 2 Apr 2019 17:25:51 +0000 (13:25 -0400)
btrbk-run
mount-latest-subvol

index 4762b2fd553319a0bfaca886f893ea29d85ac2c0..602422987946e1c87b4dbf3e86094108056706c2 100755 (executable)
--- a/btrbk-run
+++ b/btrbk-run
@@ -53,7 +53,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 +87,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 +95,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 +124,7 @@ if [[ -v targets ]]; then
   echo "targets: ${targets[*]}"
 fi
 
-if [[ -v source ]]; then
+if [[ $source ]]; then
   echo "source: $source"
 fi
 
@@ -222,7 +222,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 +232,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 +265,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 +294,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.
 
index bf5ec9c844e27221d0a91548dfc834f16fdb6b05..215b07f8faf0f73ef227005ae693b17f626caf9d 100644 (file)
@@ -15,6 +15,8 @@
 
 # usage: mount-latest-subvol
 
+# TODO, check our current directory, make sure we arent going to kill ourselves
+
 [[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@"
 
 errcatch() {