You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
Django/Jinja
53 lines
1.1 KiB
Django/Jinja
#!/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
|