aboutsummaryrefslogtreecommitdiffstats
path: root/arch-system/backup-sudo
diff options
context:
space:
mode:
Diffstat (limited to 'arch-system/backup-sudo')
-rwxr-xr-xarch-system/backup-sudo34
1 files changed, 34 insertions, 0 deletions
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