diff options
Diffstat (limited to 'lifeboat')
-rwxr-xr-x | lifeboat | 48 |
1 files changed, 45 insertions, 3 deletions
@@ -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 |