Malcom H sent this msg directly to me, but I do think it's useful on this tread:
filesystems which support creation of checkpoints and/or snapshots are probably the appropriate way to solve that issue - zfs is one that comes to mind, although istr there is a "fssnap" feature in ffs in NetBSD but I haven't used it in ages ...
done at the filesystem level with zfs you do indeed get directory trees, permissions, ACLs and everything back, because with zfs' copy-on-write model you are looking at files which reference exactly the same blocks they had when the snapshot was taken
creative ways to manage generation of snapshots on a system will let you walk previous versions of your filesystem at any arbitrary time that you create them - albeit with some penalty for keeping track of the differences between the filesystem state as it was then and how it is now ...
Regards,
Malcolm
I like the idea that every file is treated as if the FS were one, giant, VCS...