source /b/bash_unpublished/source-semi-priv
fi
-script_dir=$(dirname $(readlink -f "$BASH_SOURCE"))
-
# note q is owned by root:1000
-# note p/m is owned 1000:1000 and chmod 700
-
mountpoints=()
rate_limit=no
verbose=true; verbose_arg=-v
progress_arg="--progress"
+pull_reexec=false
default_args_file=/etc/btrbk-run.conf
if [[ -s $default_args_file ]]; then
set -- $(< $default_args_file) "$@"
+ echo "$0: warning: default btrbk-run options set in $default_args_file (sleeping 5 seconds):"
+ cat $default_args_file
+ sleep 5
fi
-temp=$(getopt -l help cl:m:nps:t:vh "$@") || usage 1
+orig_args=("$@")
+temp=$(getopt -l pull-reexec,help cl:m:nps:t:vh "$@") || usage 1
eval set -- "$temp"
while true; do
case $1 in
-m) IFS=, mountpoints=($2); unset IFS; shift 2 ;;
-n) dry_run=true; dry_run_arg=-n; shift ;;
-p) progress_arg="--progress"; shift ;;
+ --pull-reexec) pull_reexec=true; shift ;;
-q) verbose=false; verbose_arg=; progress_arg=; shift ;;
# source host to receive a backup from
-s) source=$2; shift 2 ;;
# usefull commands are resume and archive
cmd_arg=${1:-run}
-if [[ -s $default_args_file ]]; then
- echo "$0: warning: default btrbk-run options set in $default_args_file (sleeping 5 seconds):"
- cat $default_args_file
- sleep 5
-fi
-
if [[ -v targets && $source ]]; then
echo "$0: error: -t and -s are mutually exclusive" >&2
exit 1
fi
+# pull_reexec stops us from getting into an infinite loop if there is some
+# kind of weird problem
+if ! $pull_reexec && [[ $source ]]; then
+ tmpf=$(mktemp)
+ scp $source:/a/bin/distro-setup/btrbk-run $tmpf
+ if diff -q $tmpf $BASH_SOURCE; then
+ echo "$0: found newer version on host $source. reexecing"
+ install -T $tmpf /usr/local/bin/btrbk-run
+ /usr/local/bin/btrbk-run --pull-reexec "${orig_args[@]}"
+ fi
+fi
+
+
echo -e "$0: options: conf_only=$conf_only\ndry_run=$dry_run\nrate_limit=$rate_limit\nverbose=$verbose\ncmd_arg=$cmd_arg"
+### end options parsing
+
# set default targets
if [[ ! -v targets && ! $source ]]; then
# transaction info.
transaction_syslog local7
-# 20%ish speedup[]
-stream_buffer 512m
+# note, i had this because man said 20% speedup, but ran into
+# this issue, https://github.com/digint/btrbk/issues/275
+#stream_buffer 512m
# so we only run one at a time
lockfile /var/lock/btrbk.lock
-for tg in ${targets[@]:-$HOSTNAME}; do
- # for an initial run, btrbk requires the dir to exist.
- ssh root@$tg mkdir -p /mnt/root/btrbk
+# for an initial run, btrbk requires the dir to exist.
+mkdir -p /mnt/root/btrbk
+local_zone=$(date +%z)
+for h in ${targets[@]} $source; do
+ zone=$(ssh root@$h "mkdir -p /mnt/root/btrbk; date +%z")
+ if [[ $zone != $local_zone ]]; then
+ echo "error: error. dont confuse yourself with multiple time zones. $h has different timezone than localhost" >&2
+ exit 1
+ fi
done