X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=btrbk-run;h=71b0e6b76c939a2c36f085a93dd947adb0a49029;hb=3174b9cb665b9a7b7ac8413a8e236cd236786632;hp=4762b2fd553319a0bfaca886f893ea29d85ac2c0;hpb=9bd685f6da7ad7b9b00eee67a7f767466c42229c;p=distro-setup diff --git a/btrbk-run b/btrbk-run old mode 100755 new mode 100644 index 4762b2f..71b0e6b --- a/btrbk-run +++ b/btrbk-run @@ -24,13 +24,22 @@ trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR usage() { cat <<'EOF' btrbk-run [OPTIONS] -usually -t TARGET_HOST +usually -t TARGET_HOST or -s SOURCE_HOST + +Note, at source location, intentionally not executable, run and read +install-my-scripts. + EOF echo "top of script file:" sed -n '1,/^[# ]*end command line/{p;b};q' "$0" exit $1 } +# latest $MAIL_HOST +if [[ -e /b/bash_unpublished/source-semi-priv ]]; then + source /b/bash_unpublished/source-semi-priv +fi + script_dir=$(dirname $(readlink -f "$BASH_SOURCE")) # note q is owned by root:1000 @@ -53,7 +62,7 @@ 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 @@ -87,7 +96,7 @@ if [[ -s $default_args_file ]]; then sleep 5 fi -if [[ -v targets && -v source ]]; then +if [[ -v targets && $source ]]; then echo "$0: error: -t and -s are mutually exclusive" >&2 exit 1 fi @@ -95,7 +104,7 @@ 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 && ! -v source ]]; then +if [[ ! -v targets && ! $source ]]; then case $HOSTNAME in x2|kw) if [[ $HOSTNAME == "$MAIL_HOST" ]]; then @@ -124,40 +133,42 @@ if [[ -v targets ]]; then echo "targets: ${targets[*]}" fi -if [[ -v source ]]; then +if [[ $source ]]; then echo "source: $source" fi - -# set default mountpoints -case $HOSTNAME in - # 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 - prospective_mps+=(/o) +if [[ $mountpoints ]]; then + for mp in ${mountpoints[@]}; do # default mountpoints to sync + if [[ -e /nocow/btrfs-stale/$mp ]]; then + echo "$0: error: $mp is stale, mount-latest-subvol first" + exit 1 fi - ;; -esac -case ${targets[0]} in - kw|kww) - prospective_mps=(/a) - ;; -esac - -for mp in ${prospective_mps[@]}; do # default mountpoints to sync - if [[ -e /nocow/btrfs-stale/$mp ]]; then - echo "$0: warning: $mp stale, not adding to default mountpoints" - continue - fi - if awk '{print $2}' /etc/fstab | grep -xF $mp &>/dev/null; then - mountpoints+=($mp) - fi -done + done +else + # set default mountpoints + case $HOSTNAME in + # 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 + prospective_mps+=(/o) + fi + ;; + esac + for mp in ${prospective_mps[@]}; do # default mountpoints to sync + if [[ -e /nocow/btrfs-stale/$mp ]]; then + echo "$0: warning: $mp stale, not adding to default mountpoints" + continue + fi + if awk '{print $2}' /etc/fstab | grep -xF $mp &>/dev/null; then + mountpoints+=($mp) + fi + done +fi echo "mountpoints: ${mountpoints[*]}" @@ -222,7 +233,7 @@ EOF -for tg in ${targets[@]:-localhost}; do +for tg in ${targets[@]:-$HOSTNAME}; do # for an initial run, btrbk requires the dir to exist. ssh root@$tg mkdir -p /mnt/root/btrbk done @@ -232,9 +243,9 @@ done vol=/mnt/root for m in ${mountpoints[@]}; do sub=${m##*/} - if [[ -v source ]]; then + if [[ $source ]]; then cat >>/etc/btrbk.conf </dev/null; then @@ -294,12 +306,13 @@ if mountpoint $rsync_mountpoint >/dev/null; then done fi -if ! $dry_run; then - # note, targets will be empty if source is set. - m $script_dir/mount-latest-remote ${targets[@]} +/a/bin/distro-setup/install-my-scripts +if [[ $source ]]; then + m mount-latest-subvol +else + m /a/exe/mount-latest-remote ${targets[@]} fi - # todo: move variable data we don't care about backing up # to /nocow and symlink it.