X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=btrbk-run;h=04a71a82da4c18db673c79bae3e7c2c9573b6150;hb=a1ebefe19ab910d20fad0c2fd88637fee23dee7c;hp=10bd6382c65df24a4ec1efe35a45270e70ad9005;hpb=36f92d5af79d7934e953515f58af1c86d6838599;p=distro-setup diff --git a/btrbk-run b/btrbk-run index 10bd638..04a71a8 100644 --- a/btrbk-run +++ b/btrbk-run @@ -45,7 +45,8 @@ rsync-dirs() { pre="${0##*/}: " m() { if $verbose; then printf "$pre%s\n" "$*"; fi; "$@"; } e() { printf "$pre%s\n" "$*"; } -die() { printf "$pre%s\n" "$*" >&2; exit 1; } +die() { printf "$pre%s\n" "$*" >&2; echo "exiting with status 1" >&2; exit 1; } +mexit() { echo "$pre: exiting with status $1"; exit $1; } # latest $MAIL_HOST if [[ -e /b/bash_unpublished/source-state ]]; then @@ -58,12 +59,14 @@ mountpoints=() rsync_mountpoint=/q +ret=0 # default options conf_only=false dry_run=false # mostly for testing rate_limit=no verbose=true; verbose_arg=-v progress_arg="--progress" +incremental_strict=true pull_reexec=false default_args_file=/etc/btrbk-run.conf @@ -77,7 +80,7 @@ fi cron=false orig_args=("$@") -temp=$(getopt -l cron,pull-reexec,help cl:m:npqs:t:vh "$@") || usage 1 +temp=$(getopt -l cron,pull-reexec,help cil:m:npqs:t:vh "$@") || usage 1 eval set -- "$temp" while true; do case $1 in @@ -88,6 +91,7 @@ while true; do ;; # only creates the config file, does not run btrbk -c) conf_only=true; shift ;; + -i) incremental_strict=false; shift ;; # bytes per second, suffix k m g -l) rate_limit=$2; shift 2 ;; # Comma separated mountpoints to backup. This has defaults set below. @@ -129,6 +133,11 @@ if $verbose; then fi ### end options parsing +if ! btrbk --version |& grep 0.29.0 >/dev/null; then + cd /a/opt/btrbk + m sudo make install +fi + # TODO: i wonder if there should be an option to send to the default # targets, plus any given on the command line. @@ -136,7 +145,7 @@ fi if [[ ! -v targets && ! $source ]]; then if [[ $HOSTNAME != "$MAIL_HOST" ]] && $cron ; then echo "MAIL_HOST=$MAIL_HOST, nothing to do" - exit 0 + mexit 0 fi at_work=false @@ -147,8 +156,8 @@ if [[ ! -v targets && ! $source ]]; then ;;& x2|x3) if ping -q -c1 -w1 hal.office.fsf.org \ - && ip n show 192.168.0.26 | grep . &>/dev/null; then - at_work=true + && ip n show 192.168.0.26 | grep . &>/dev/null; then + at_work=true fi ;;& kw|x2|x3) @@ -159,7 +168,7 @@ if [[ ! -v targets && ! $source ]]; then fi ;;& kw) - targets=($home x2) + targets=($home x3) ;; x2|x3) targets=($home kw) @@ -242,7 +251,7 @@ echo "mountpoints: ${mountpoints[*]}" if [[ $source ]]; then if [[ $(ssh $source systemctl is-active btrbk.service) != inactive ]]; then echo "$0: error: cron btrbk is running on source. exiting out of caution" - exit 1 + mexit 1 fi fi @@ -262,7 +271,7 @@ if ! $pull_reexec && [[ $source ]] && $pulla ; then e "found newer version on host $source. reexecing" install -T $tmpf /usr/local/bin/btrbk-run m /usr/local/bin/btrbk-run --pull-reexec "${orig_args[@]}" - exit + mexit 0 fi fi @@ -367,9 +376,11 @@ target_preserve_min 4h rate_limit $rate_limit EOF - - - +if $incremental_strict; then + cat >>/etc/btrbk.conf <