From 7cd00bca2cb4661c6fd2bb3196f07e54eaea5020 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Sat, 24 Sep 2016 21:22:50 -0700 Subject: [PATCH] initial btrbk backup script --- btrbk-run | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 btrbk-run diff --git a/btrbk-run b/btrbk-run new file mode 100755 index 0000000..32a0c1d --- /dev/null +++ b/btrbk-run @@ -0,0 +1,88 @@ +#!/bin/bash -l + +set -eE -o pipefail +trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR + +[[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@" + +conf_only=false +if [[ $1 == -c ]]; then + # mostly for testing + conf_only=true +fi + +target_host=frodo +cat >/etc/btrbk.conf <<'EOF' +ssh_identity /root/.ssh/id_rsa +transaction_syslog daemon + +# so we only run one at a time +lockfile /var/lock/btrbk.lock + +# default format of short does not accomidate hourly preservation setting +timestamp_format long-iso +# background on timezones. with short/long, timestamps use local time. +# for long, if your local time moves backwards, by moving timezones or +# for an hour when daylight savings changes it, you will temporarily get +# a more aggressive retention policy for the overlapping period, and +# vice versa for the opposite timezone move. The alternative is using +# long-iso, which puts timezone info into the timestamp, which means +# that instead of shifting time, you shift the start of day/week/month +# which is used for retention to your new local time, which means for +# example, if you moved forward by 8 hours, the daily/weekly/monthly +# retention will be 8 hours more aggressive since midnight is at a new +# time, unless you fake the timzeone using the TZ env variable. +# However, in the short term, there will be no inconsistencies. +# I don't see any problem with shifting when the day starts for +# retention, so I'm using long-iso. + +# only make a snapshot if things have changed +snapshot_create onchange +# much less snapshots because I have less space on the +# local filesystem. +snapshot_preserve 2h 2d + +# so, total backups = ~89 +target_preserve 48h 14d 8w 24m +target_preserve_min 6h + +# if something fails and it's not obvious, try doing +# btrbk -l debug -v dryrun +EOF + + +case $HOSTNAME in + tp|x2) + if ! timeout -s 9 10 ssh frodo :; then + target_host=$HOME_DOMAIN + cat >>/etc/btrbk.conf </dev/null || return + cat >>/etc/btrbk.conf <