#!/usr/bin/env bash set -e src="/" snapshotdir="/backup-snap" ## # usage : is_btrfs( $path ) # return : whether $path is on a btrfs # source: makechrootpkg from devtools ## is_btrfs() { [[ -e "$1" && "$(stat -f -c %T "$1")" == btrfs ]] } delete_snapshot() { btrfs subvolume delete --commit-after "$snapshotdir" } if is_btrfs "$src"; then if [[ -d "$snapshotdir" ]]; then delete_snapshot fi btrfs subvolume snapshot -r "$src" "$snapshotdir" src="$snapshotdir" fi systemctl is-active postgresql && /usr/local/bin/backup-postgres.sh || true if systemctl is-active mysqld || systemctl is-active mariadb; then /usr/local/bin/backup-mysql.sh || true fi borg create \ --verbose \ --stats \ --list \ -compression lz4 \ -e '/home/*/.cache/' \ -e /var/tmp \ -e /proc \ -e /sys \ -e /dev \ -e /run \ -e /tmp \ -e /var/cache \ {{ backup_host }}:{{ backup_dir }}::$(date "+%Y%m%d-%H%M%S") "$src" borg prune -v {{ backup_host }}:{{ backup_dir }} --keep-daily=7 --keep-weekly=4 --keep-monthly=6 if [[ -d "$snapshotdir" ]]; then delete_snapshot fi