aboutsummaryrefslogtreecommitdiffstats
path: root/lifeboat
diff options
context:
space:
mode:
authorWynn Wolf Arbor2020-02-01 17:56:32 +0100
committerWynn Wolf Arbor2020-02-01 17:56:32 +0100
commitb7149e7449462850de07733be9dae325b17057ef (patch)
tree6428a97beccd262e1bc3447ac57be4c5bc9ebdc4 /lifeboat
parentbfe5d41289b57b5a03fbc1c8981f4be9a7b2378e (diff)
downloadlifeboat-b7149e7449462850de07733be9dae325b17057ef.tar.gz
Introduce default fallback jobs
When before lifeboat was expecting the user to populate the run, post, and sync scripts, now it includes a sane default for each step of the backup process, making deployments much more simple. The post script was split up into retain and clean.
Diffstat (limited to 'lifeboat')
-rwxr-xr-xlifeboat48
1 files changed, 45 insertions, 3 deletions
diff --git a/lifeboat b/lifeboat
index d4100d0..9d569f5 100755
--- a/lifeboat
+++ b/lifeboat
@@ -15,13 +15,55 @@ usage() {
run_backup() {
(
cd "$rootdir/$repo"
- ./run
- for i in post sync; do
- test -x $i && ./$i
+
+ for i in run retain clean sync; do
+ if test -x $i; then
+ ./$i
+ else
+ ${i}_default;
+ fi
done
)
}
+run_default() {
+ restic-priv backup --files-from config/include --exclude-file config/exclude --exclude-caches
+}
+
+retain_default() {
+ restic forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 2
+}
+
+clean_default() {
+ restic check
+ restic prune
+}
+
+sync_default() {
+ if ! test -r config/sync; then
+ return
+ fi
+
+ while read -r target_spec; do
+ target=$(echo "$target_spec" | cut -f1)
+ limit=$(echo "$target_spec" | cut -sf2)
+
+ if test -n "$limit"; then
+ if test "$(du -s "$RESTIC_REPOSITORY" | cut -f1)" -gt "$limit"; then
+ printf "Warning: size threshold exceeded, skipping sync to %s\n" "$target/$LIFEBOAT_REPO_NAME"
+ else
+ sync_single "$target"
+ fi
+ else
+ sync_single "$target"
+ fi
+ done < config/sync
+}
+
+sync_single() {
+ rclone sync --transfers 20 --fast-list "$RESTIC_REPOSITORY" "$1/$LIFEBOAT_REPO_NAME"
+}
+
rootdir=${LIFEBOAT_ROOT:-"/srv/backup/lifeboat"}
test $# -lt 2 && usage