blob: 90590e0134634ed8665bad08b87cc160564e8adf (
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
35
36
37
38
39
40
|
#!/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"
# small race, but shouldn't matter
if ! btrfs subvolume show "$3" > /dev/null 2>&1; then
echo "Not a btrfs subvolume." >&2
exit 3
fi
touch -c -- "$3"
btrfs subvolume snapshot -r -- "$3" "$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 -df /backup
;;
*)
echo "No command specified." >&2
exit 1
;;
esac
|