From b8a806dfc701118ce1f10d5332093ac1f710d808 Mon Sep 17 00:00:00 2001 From: Tharre Date: Tue, 27 Mar 2018 07:02:36 +0200 Subject: arch-system: add backup-system package This implements fully automated, hourly backups of my /home via borgbackup, btrfs and systemd timers. Note that `setup_borgbackup`, a related function that is part of my dotfiles, is needed to setup backups for the first time, as well as a call to `borg init` with the proper environment variables. --- arch-system/backup-sudo | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 arch-system/backup-sudo (limited to 'arch-system/backup-sudo') diff --git a/arch-system/backup-sudo b/arch-system/backup-sudo new file mode 100755 index 0000000..b2694b6 --- /dev/null +++ b/arch-system/backup-sudo @@ -0,0 +1,34 @@ +#!/bin/bash -e + +validate_path() { + # validate path + targetpath=$(realpath -m -- "$1") + if [[ "$targetpath" != /.snapshots/* ]]; then + echo "Invalid path given." >&2 + exit 2 + fi +} + +case "$1" in + snapshot) + validate_path "$2" + btrfs subvolume snapshot -r -- /home "$2" + ;; + delete_snapshot) + validate_path "$2" + btrfs subvolume delete -- "$2" + ;; + mount) + validate_path "$2" + mkdir -p /backup + mount --bind -- "$2" /backup + ;; + cleanup) + umount /backup 2> /dev/null || true + rm -rf /backup + ;; + *) + echo "No command specified." >&2 + exit 1 + ;; +esac -- cgit v1.2.3-70-g09d2