#!/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"