I think people have been recommending snapper.
Personally, I use ZFS. But the way I do it is quite complicated.