X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=mount-latest-remote;h=2b5ca59fd81bfdf4efbf27385e22e86bfca3b3c5;hp=d43cbf2081102ba3c255de6d94c9c74595f1ac04;hb=HEAD;hpb=d6def754cd241538c61456536b52ee51cbd85b42 diff --git a/mount-latest-remote b/mount-latest-remote index d43cbf2..f63a6f7 100755 --- a/mount-latest-remote +++ b/mount-latest-remote @@ -1,5 +1,12 @@ #!/bin/bash -# Copyright (C) 2016 Ian Kelling +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,20 +20,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -source /usr/local/lib/err -script_dir=$(dirname $(readlink -f "$BASH_SOURCE")) + +# usage: HOST [mount-latest-subvol args] + +set -e; . /usr/local/lib/bash-bear; set +e + +this_file="$(readlink -f -- "${BASH_SOURCE[0]}")" +readonly this_file script_dir="${this_file%/*}" if (( ! $# )); then - echo "mount-latest-remote: error: expected 1 or more host arguments" + echo "mount-latest-remote: error: a host argument" exit 1 fi +tg="$1" +shift + $script_dir/install-my-scripts cd /usr/local ecode=0 -failed_hosts=() # exit code run er() { @@ -34,26 +48,18 @@ er() { "$@" || ret=$? if (( ret )); then echo "$0: failed command: $*" - failed_hosts+=($tg) fi if (( ret > ecode )); then ecode=$ret fi } -for tg; do - rsynctg=$tg - if [[ $tg == *:* ]]; then - rsynctg="[$tg]" - fi - # R = relative, t = times, O = omit-dir-times, p = perms - er rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/err "root@$rsynctg:/usr/local" || continue - # note: this can hang if we have an old nfs mount. - er ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol -done - -if (( $# == ${#failed_hosts[@]} )); then - echo "$0: error: all hosts failed: $*" >&2 -elif (( ${#failed_hosts[@]} )); then - echo "$0: error: some hosts failed: ${failed_hosts[@]}" >&2 +rsynctg=$tg +if [[ $tg == *:* ]]; then + rsynctg="[$tg]" fi +# R = relative, t = times, O = omit-dir-times, p = perms +er rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/bash-bear "root@$rsynctg:/usr/local" ||: +# note: this can hang if we have an old nfs mount. +er ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol "$@" + exit $ecode