summaryrefslogtreecommitdiff
path: root/src/samizdat-diff-root
blob: be28635959b9b74f8d61265a96865afa7aff7f4c (plain)
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
41
42
43
#!/bin/sh
mp=/mnt/root.tmp
fs=/

excludes='--exclude /var/log/ --exclude /tmp/'

devs()
{
  btrfs fi sh "$fs"  | sed -ne 's?^[ \t]*devid[ \t].*/dev?/dev?p'
}

[ $(id -u) = 0 ] || exec sudo "$0" "$@" || exit

if ! [ -e "$mp" ] || ! mountpoint -q "$mp"
then
  mkdir -p "$mp"
  dev=$(devs | tail -n1) || exit
  mount -t btrfs "$dev" -o subvol=/ "$mp" || exit
fi

case $# in
  0) run()
     {
       rsync -xani $excludes "$mp"/root/ "$mp"/root~orig/
     }
     ;;
  *) run()
     {
       for f
       do
         diff "$mp"/root~orig/"$f" "$mp"/root/"$f"
       done
     }
     ;;
esac
if [ -t 0 ]
then
  run "$@" | less
else
  run "$@"
fi

umount "$mp"