early=false # quit early, just btrbk, no extra remounting etc.
cron=false
orig_args=("$@")
-temp=$(getopt -l cron,pull-reexec,help ceil:m:npqs:t:vh "$@") || usage 1
+temp=$(getopt -l cron,pull-reexec,help ceil:m:npqrs:t:vh "$@") || usage 1
eval set -- "$temp"
while true; do
case $1 in
-n) dry_run=true; dry_run_arg=-n; shift ;;
-p) progress_arg="--progress"; shift ;;
--pull-reexec) pull_reexec=true; shift ;;
+ -r) archive=false; shift ;;
-q) verbose=false; verbose_arg=; progress_arg=; shift ;;
# source host to receive a backup from
-s)
targets=(frodo.b8.nz)
case $HOSTNAME in
- kw)
+ x2|kw)
at_work=true
;;&
x2|x3|sy|bo)
fi
;;&
kw)
- targets+=($home x3)
+ targets+=($home x2.office.fsf.org)
;;
x2|x3|sy|bo)
targets+=($home)
if $at_work; then
- targets+=(kw.office.fsf.org x2.b8.nz)
+ targets+=(x2.office.fsf.org x2.b8.nz)
else
- targets+=(kw.b8.nz)
+ targets+=(x2wg.b8.nz)
fi
;;
kd)
- targets+=(x2.b8.nz kw.b8.nz)
+ targets+=(x2wg.b8.nz x3.b8.nz)
if ping -q -c1 -w1 sy.b8.nz &>/dev/null; then
targets+=(sy.b8.nz)
else
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.
- prospective_mps+=(/a /q)
+ prospective_mps+=(/a /ar /qr /q)
;;
esac
fi
fi
-if ! which btrbk &>/dev/null; then
+if ! command -v btrbk &>/dev/null; then
die "error: no btrbk binary found"
fi
# if our mountpoints are from stale snapshots,
check-subvol-stale ${mountpoints[@]} || die "found stale mountpoints in ${mountpoints[*]}"
# for an initial run, btrbk requires the dir to exist.
-mkdir -p /mnt/root/btrbk
+mkdir -p /mnt/{root,o}/btrbk
local_zone=$(date +%z)
if [[ $source ]]; then
sshfail=()
min_idle_ms=$((1000 * 60 * 15))
for h in ${targets[@]}; do
- if remote_info=( $(timeout -s 9 6 ssh root@$h "mkdir -p /mnt/root/btrbk && date +%z && df --output=size,pcent / | tail -n1") ); then
+ if remote_info=( $(timeout -s 9 6 ssh root@$h "mkdir -p /mnt/root/btrbk /mnt/o/btrbk && date +%z && df --output=size,pcent / | tail -n1") ); then
zone=${remote_info[0]}
root_size=${remote_info[1]}
percent_used=${remote_info[2]%%%}
EOF
fi
-vol=/mnt/root
for m in ${mountpoints[@]}; do
+ case $m in
+ /o)
+ vol=/mnt/o
+ ;;
+ *)
+ vol=/mnt/root
+ ;;
+ esac
+
sub=${m#/}
if [[ $source ]]; then
cat >>/etc/btrbk.conf <<EOF
target_preserve_min 2h
EOF
;;
- esac
+ esac
for tg in ${targets[@]}; do
# handle ipv6
if [[ $tg == *:* ]]; then