#!/usr/bin/env bash # If neither of BACKUP_HELPER_DIRS and BACKUP_HELPER_COMMANDS not set. Exit if [ -z "$BACKUP_HELPER_DIRS" ] && [ -z "$BACKUP_HELPER_COMMANDS" ]; then echo "BACKUP_HELPER_DIRS is not set" exit 1; fi exit_code=0; # Backup directories if [ -n "$BACKUP_HELPER_DIRS" ]; then for i in ${BACKUP_HELPER_DIRS//,/ }; do echo "Starting backup of $i"; if ! output=$(restic backup "$i"); then exit_code=1; echo "Backup of $i failed with exit code $?:" echo "$output" else echo "Backup of $i successful:" echo "$output" fi done fi # Backup command outputs if [ -n "$BACKUP_HELPER_COMMANDS" ]; then IFS=";" read -r -a pairs <<< "$BACKUP_HELPER_COMMANDS" for pair in "${pairs[@]}"; do IFS=":" read -r key value <<< "$pair" if ! output=$(restic backup --stdin-filename "$key" --stdin-from-command -- "$value"); then exit_code=1; echo "Backup of $i failed with exit code $?:" echo "$output" else echo "Backup of $i successful:" echo "$output" fi done fi if [ "$BACKUP_FORGET" -eq 1 ]; then echo "Removing old backups" output=$(restic forget -d 7 -w 4 -m 6 --keep-within 1d --prune) echo "$output" fi exit "$exit_code"