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