X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=btrbk-run;h=cf7cf836f4ec96f966dc477d7fee631dbdcd68d2;hb=b186607514fbcf10bd5664ccb759a6e873f048c7;hp=dcca4b7dd036dca6fb662f40e9904a824160e6bd;hpb=72c18f3a6a7f1ed0ca16af654a1f804ab96e1ff9;p=distro-setup diff --git a/btrbk-run b/btrbk-run index dcca4b7..cf7cf83 100644 --- a/btrbk-run +++ b/btrbk-run @@ -261,21 +261,26 @@ if [[ ! -v targets && ! $source ]]; then ;;& *) if $at_home; then - if ! $kd_spread; then + if ! $kd_spread && [[ $HOSTNAME != x3 ]]; then # main work machine if ping -q -c1 -w1 x3.office.fsf.org &>/dev/null; then targets+=(x3.office.fsf.org) + elif ping -q -c1 -w1 $h.b8.nz &>/dev/null; then + # in case we took it home + targets+=(x3.b8.nz) else targets+=(x3wg.b8.nz) fi fi - for h in frodo kd; do + # temporarily disabled while doing recovery + # for h in frodo kd; do + for h in kd; do if [[ $HOSTNAME == "$h" ]]; then continue fi targets+=($h.b8.nz) done - for h in x2 x3 sy; do + for h in x2 sy; do if [[ $HOSTNAME == "$h" ]]; then continue fi @@ -345,6 +350,9 @@ else if [[ $HOSTNAME == "$HOST2" ]]; then prospective_mps+=(/a /ar /qr /q) fi + if $kd_spread; then + prospective_mps=(/a /ar /o /qr /q) + fi fi # note: put q last just in case its specific retention options were to # affect other config sections. I havent tested if that is the case. @@ -362,10 +370,15 @@ else done fi +if (( ! ${#mountpoints[@]} )); then + die didnt get mountpoint arg and had no defaults +fi + echo "mountpoints: ${mountpoints[*]}" ##### end command line parsing ######## +# todo: this has a timing problem, since btrbk.timer could activate the service after this check. if ! $fast && [[ $source ]]; then if [[ $(ssh $source ps --no-headers -o comm 1) == systemd ]]; then status=$(ssh $source systemctl is-active btrbk.service) || : # normally returns 3 @@ -441,16 +454,21 @@ else root_size=$(( 1024 * 1024 * 2000 )) #2tb percent_used=10 zone=$(date +%z) - elif tmpstr=$(timeout -s 9 6 ssh root@$h "mkdir -p /mnt/root/btrbk /mnt/o/btrbk && date +%z && df --output=size,pcent / | tail -n1"); then - IFS=" " read -r -a remote_info <<<"$tmpstr" - - zone=${remote_info[0]} - root_size=${remote_info[1]} - percent_used=${remote_info[2]%%%} - - if (( ${#remote_info[@]} != 3 )); then - die "error: didnt get 3 fields in test ssh to target $h. investigate" + elif remote_str=$(timeout -s 9 6 ssh root@$h "mkdir -p /mnt/root/btrbk /mnt/o/btrbk && date +%z && df --output=size,pcent / | tail -n1"); then + mapfile -t tmp_array <<<"$remote_str" + zone="${tmp_array[0]}" + IFS=" " read -r root_size percent_used <<<"${tmp_array[1]}" + percent_used=${percent_used%%%} + + if (( ${#tmp_array[@]} != 2 )); then + die "error: didnt get 2 lines in test ssh to target $h. investigate" fi + case $percent_used in + [0-9]|[1-9][0-9]) : ;; + *) + die "error: didnt get percent disk use in test ssh to target $h. investigate" + ;; + esac else sshfail+=($h) continue @@ -654,7 +672,9 @@ done if [[ $source ]]; then m mount-latest-subvol "${subvols[@]}" else - m /a/exe/mount-latest-remote ${targets[@]} + for tg in ${targets[@]}; do + m /a/exe/mount-latest-remote "$tg" "${subvols[@]}" || ret=$? + done fi if [[ $ret == 0 ]]; then