#!/bin/bash set -eu if [ "$(id -u)" -ne 0 ]; then echo "Must be root" exit 1 fi if pgrep backup > /dev/null; then echo "Backup is still running!" exit 1 fi if [ -z "${1:-}" ]; then echo "Usage: $0 root" exit 1 fi BACKUP_PROFILE="$1" source "/etc/borg/${BACKUP_PROFILE}/env" HOME=/root ionice -c 3 -p $$ renice -n 19 -p $$ > /dev/null if [ "$BACKUP_SNAP" -eq 1 ]; then echo ">>> Snapshotting" bsnap on fi cd "$BACKUP_PATH" echo ">>> Starting backup" borg create \ $([ -t 0 ] && echo --progress) \ --info --stats \ --compression lz4 \ --exclude-from "/etc/borg/${BACKUP_PROFILE}/exclude" \ "${BACKUP_REPO}::{hostname}-{now}" . echo ">>> Pruning old backups" borg prune \ --info --stats \ --keep-daily=7 \ --keep-weekly=4 \ --keep-monthly=12 \ --prefix='{hostname}-' \ "$BACKUP_REPO" cd / if [ "$BACKUP_SNAP" -eq 1 ]; then echo ">>> Unsnapshotting" bsnap off fi exit 0