aboutsummaryrefslogtreecommitdiffstats
path: root/arch-system/backup-sudo
blob: b2694b66cfcf69fbb5a3a1cd7429c559647d8dbd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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