X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=btrbk-run;h=602422987946e1c87b4dbf3e86094108056706c2;hb=af37f71b1c4e1dfa9ebe9a270f4b839cd742cad5;hp=0c8dd8b40600052da4a88b696dd0b484740a1e23;hpb=6eab5a709d21f2d58b8f50773a7c34160fc2f5e7;p=distro-setup diff --git a/btrbk-run b/btrbk-run index 0c8dd8b..6024229 100755 --- a/btrbk-run +++ b/btrbk-run @@ -45,17 +45,15 @@ rsync_mountpoint=/q conf_only=false dry_run=false # mostly for testing rate_limit=no -verbose=true -if [[ $- == *i* ]]; then - progress_arg="--progress" -fi +verbose=true; verbose_arg=-v +progress_arg="--progress" default_args_file=/etc/btrbk-run.conf if [[ -s $default_args_file ]]; then set -- $(< $default_args_file) "$@" fi -temp=$(getopt -l help cl:m:npt:vh "$@") || usage 1 +temp=$(getopt -l help cl:m:nps:t:vh "$@") || usage 1 eval set -- "$temp" while true; do case $1 in @@ -68,6 +66,8 @@ while true; do -n) dry_run=true; dry_run_arg=-n; shift ;; -p) progress_arg="--progress"; shift ;; -q) verbose=false; verbose_arg=; progress_arg=; shift ;; + # source host to receive a backup from + -s) source=$2; shift 2 ;; # target hosts to send to. empty is valid for just doing local # snapshot. we have default hosts we will populate. -t) IFS=, targets=($2); unset IFS; shift 2 ;; @@ -87,10 +87,15 @@ if [[ -s $default_args_file ]]; then sleep 5 fi +if [[ -v targets && $source ]]; then + echo "$0: error: -t and -s are mutually exclusive" >&2 + exit 1 +fi + echo -e "$0: options: conf_only=$conf_only\ndry_run=$dry_run\nrate_limit=$rate_limit\nverbose=$verbose\ncmd_arg=$cmd_arg" # set default targets -if [[ ! -v targets ]]; then +if [[ ! -v targets && ! $source ]]; then case $HOSTNAME in x2|kw) if [[ $HOSTNAME == "$MAIL_HOST" ]]; then @@ -115,15 +120,22 @@ if [[ ! -v targets ]]; then esac fi -echo "targets: ${targets[*]}" +if [[ -v targets ]]; then + echo "targets: ${targets[*]}" +fi + +if [[ $source ]]; then + echo "source: $source" +fi # set default mountpoints case $HOSTNAME in - frodo) - prospective_mps=(/i) - ;; + # no remote backups atm. note, if we do enable this, configuration below will need some changes. + # frodo) + # prospective_mps=(/i) + # ;; *) prospective_mps=(/a /q) if [[ $HOSTNAME == "$MAIL_HOST" ]]; then @@ -157,21 +169,7 @@ rsync-dirs() { m rsync $dry_run_arg -ahi --relative --delete "$path" "root@$host:/" } -vol-conf() { - cat >>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf <>/etc/btrbk.conf </dev/null; then for tg in ${targets[@]}; do case $tg in - tp|li|lk) + li|lk) for x in /p/c/machine_specific/*.hosts; do if grep -qxF $tg $x; then dir=${x%.hosts} @@ -291,11 +294,13 @@ if mountpoint $rsync_mountpoint >/dev/null; then done fi -if ! $dry_run; then - m $script_dir/mount-latest-remote ${targets[@]} +PATH=$script_dir:$PATH +if [[ $source ]]; then + m mount-latest-subvol +else + m mount-latest-remote ${targets[@]} fi - # todo: move variable data we don't care about backing up # to /nocow and symlink it.