X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=btrbk-run;h=68363821af2b1f695655805c83fe683d7f8102cc;hp=3a2d2a493495fb2fc422f02b9f5f80b52c632b39;hb=77917a8fbf2032a8b2634a1b3de0879ec45cf213;hpb=7f759d320592e791a62cd0a966350e8c53ee0976 diff --git a/btrbk-run b/btrbk-run index 3a2d2a4..6836382 100644 --- a/btrbk-run +++ b/btrbk-run @@ -66,6 +66,7 @@ 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 @@ -79,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 @@ -90,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. @@ -131,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. @@ -150,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) @@ -162,7 +168,7 @@ if [[ ! -v targets && ! $source ]]; then fi ;;& kw) - targets=($home x2) + targets=($home x3) ;; x2|x3) targets=($home kw) @@ -170,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 ;; @@ -272,7 +279,6 @@ fi - if ! which btrbk &>/dev/null; then die "error: no btrbk binary found" fi @@ -300,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 @@ -370,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