#!/bin/bash . $(dirname $0)/borg-backup-env errorexit() { mail -s 'BorgBackup' root < $LOG exit $? } ## ## write output to logfile ## exec > >(tee -i ${LOG}) exec 2>&1 echo "###### Backup started: $(date) ######" ## ## You can do some tasks before starting the backup here, for example ## - create a list of installed software ## - create database dumps ## ## ## Transfer files to repository ## borg create -v --stats \ --compression zstd,18 \ $REPOSITORY::'{now:%Y-%m-%d_%H-%M}' \ / \ --exclude /backup \ --exclude /dev \ --exclude /lost+found \ --exclude /mnt \ --exclude /proc \ --exclude /run \ --exclude /sys \ --exclude /var/run \ || { echo "Error $? during backup, aborting" ; errorexit 1; } echo echo echo "Deleting old backups..." borg prune \ --stats \ --list \ --keep-hourly 12 \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6 \ || { echo "Error $? while deleting old backups, aborting" ; errorexit 2; } echo "###### Backup finished: $(date) ######" errorexit 0