X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=btrbk-run;h=68363821af2b1f695655805c83fe683d7f8102cc;hp=60f065d62e568732cff437d501a1f108d2792f2f;hb=77917a8fbf2032a8b2634a1b3de0879ec45cf213;hpb=165008e5b82c81ebff1061c8f8294c3bc6e9dced diff --git a/btrbk-run b/btrbk-run index 60f065d..6836382 100644 --- a/btrbk-run +++ b/btrbk-run @@ -46,7 +46,7 @@ pre="${0##*/}: " m() { if $verbose; then printf "$pre%s\n" "$*"; fi; "$@"; } e() { printf "$pre%s\n" "$*"; } die() { printf "$pre%s\n" "$*" >&2; echo "exiting with status 1" >&2; exit 1; } -mexit() { echo "exiting with status $1"; exit $1; } +mexit() { echo "$pre: exiting with status $1"; exit $1; } # latest $MAIL_HOST if [[ -e /b/bash_unpublished/source-state ]]; then @@ -59,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 @@ -78,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 @@ -89,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. @@ -130,6 +133,10 @@ 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. @@ -149,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) @@ -161,7 +168,7 @@ if [[ ! -v targets && ! $source ]]; then fi ;;& kw) - targets=($home x2) + targets=($home x3) ;; x2|x3) targets=($home kw) @@ -169,16 +176,17 @@ if [[ ! -v targets && ! $source ]]; then tp) # kd disabled temporarily while its hot and i plan to work on it. #targets=(frodo kd) - targets=(frodo x3.b8.nz) + #targets=(frodo x2.b8.nz) + targets=(frodo) # might not be connected to the vpn - if timeout -s 9 10 ssh kw :; then + if timeout -s 9 6 ssh kw :; then targets+=(kw) fi ;; kd) targets=(frodo tp) # might not be connected to the vpn - if timeout -s 9 10 ssh kw :; then + if timeout -s 9 6 ssh kw :; then targets+=(kw) fi ;; @@ -271,7 +279,6 @@ fi - if ! which btrbk &>/dev/null; then die "error: no btrbk binary found" fi @@ -299,7 +306,7 @@ else for h in ${targets[@]}; do if zone=$(ssh root@$h "mkdir -p /mnt/root/btrbk && date +%z"); then # This is a separate ssh because xprintidle can fail and thats ok. - if $cron && idle_ms=$(ssh $h DISPLAY=:0 xprintidle); then + if $cron && idle_ms=$(timeout -s 9 6 ssh $h DISPLAY=:0 xprintidle); then if (( idle_ms < min_idle_ms )); then # Ignore this host. i sometimes use a non-main machine for @@ -369,9 +376,11 @@ target_preserve_min 4h rate_limit $rate_limit EOF - - - +if $incremental_strict; then + cat >>/etc/btrbk.conf </dev/null; then fi if [[ $source ]]; then - m mount-latest-subvol $verbose_arg + m mount-latest-subvol else m /a/exe/mount-latest-remote ${targets[@]} fi -e btrbk-run COMPLETED with exit status $ret mexit $ret # todo: move variable data we don't care about backing up