From 9bd685f6da7ad7b9b00eee67a7f767466c42229c Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Sun, 31 Mar 2019 14:56:20 -0400 Subject: [PATCH] add pull support, untested --- btrbk-run | 84 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/btrbk-run b/btrbk-run index 0c8dd8b..4762b2f 100755 --- a/btrbk-run +++ b/btrbk-run @@ -45,10 +45,8 @@ rsync_mountpoint=/q conf_only=false dry_run=false # mostly for testing rate_limit=no -verbose=true -if [[ $- == *i* ]]; then - progress_arg="--progress" -fi +verbose=true; verbose_arg=-v +progress_arg="--progress" default_args_file=/etc/btrbk-run.conf if [[ -s $default_args_file ]]; then @@ -68,6 +66,8 @@ while true; do -n) dry_run=true; dry_run_arg=-n; shift ;; -p) progress_arg="--progress"; shift ;; -q) verbose=false; verbose_arg=; progress_arg=; shift ;; + # source host to receive a backup from + -s) source=$2; shift 2 ;; # target hosts to send to. empty is valid for just doing local # snapshot. we have default hosts we will populate. -t) IFS=, targets=($2); unset IFS; shift 2 ;; @@ -87,10 +87,15 @@ if [[ -s $default_args_file ]]; then sleep 5 fi +if [[ -v targets && -v source ]]; then + echo "$0: error: -t and -s are mutually exclusive" >&2 + exit 1 +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 ]]; then +if [[ ! -v targets && ! -v source ]]; then case $HOSTNAME in x2|kw) if [[ $HOSTNAME == "$MAIL_HOST" ]]; then @@ -115,15 +120,22 @@ if [[ ! -v targets ]]; then esac fi -echo "targets: ${targets[*]}" +if [[ -v targets ]]; then + echo "targets: ${targets[*]}" +fi + +if [[ -v source ]]; then + echo "source: $source" +fi # set default mountpoints case $HOSTNAME in - frodo) - prospective_mps=(/i) - ;; + # no remote backups atm. note, if we do enable this, configuration below will need some changes. + # frodo) + # prospective_mps=(/i) + # ;; *) prospective_mps=(/a /q) if [[ $HOSTNAME == "$MAIL_HOST" ]]; then @@ -157,21 +169,7 @@ rsync-dirs() { m rsync $dry_run_arg -ahi --relative --delete "$path" "root@$host:/" } -vol-conf() { - cat >>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf </dev/null; then for tg in ${targets[@]}; do case $tg in - tp|li|lk) + li|lk) for x in /p/c/machine_specific/*.hosts; do if grep -qxF $tg $x; then dir=${x%.hosts} @@ -292,6 +295,7 @@ if mountpoint $rsync_mountpoint >/dev/null; then fi if ! $dry_run; then + # note, targets will be empty if source is set. m $script_dir/mount-latest-remote ${targets[@]} fi -- 2.30.2