It should be doable is combined with a normal snapshot function. That way you only have to track changed between each snapshot rather that from the beginning of the servers lifetime. You can also improve snapshot efficiency and only recording the chunks that get updated. And have a outside utility program that would stitch together the chunks if a pull from the backup is needed. This methid while harder to program for would/should speed up the backup proses and reduce the lag it creates.
You might also want to get in touch with Armoa1997 he/she/it already has a fairly well functioning backup mod and working together to create a doublearomaclaydoor mod might be a good idea. At the very least he/she/it might be able to and willing to give you some advice or even help.
Theres a huge difference in ingame logging and backups. Also the rollbacks and backup restoring are also extremely different.
Backups take all the data about the world and save it regardless of what it is or how it came about. This means it affects everyone over a defined period of time no matter what they did. AKA Copy/Paste This also means you can't do this live on the server if something happens. You need to shutdown swap files and restart. (Unless this has changed but i doubt that.)
Rollbacks work block by block. So now instead of just creating clones we need to track what's happening where and by who. If this was done with everything that exists at once the databases would be huge and would take forever to do anything. So to solve this issues we only track what people do, where it happens and what they did. Because we are only watching a fraction of what people do we can do live changes(If mods allow). This means it only affects people that it needs to, In areas that only should be affected and you don't need to shut stuff down to do so.
On top of this for us to know what people are doing we need hooks. If someone interacts with something with a hook we can log it because somewhere in some code its shouting "HEY HE DID SOMETHING!" If he then interacts with something without a hook it might whisper to whoever needs it and nobody else will ever know something happened thus making it impossible for us to track and rollback.
Currently we have the fastest way possible (That we know of) for storing and retriving data. Thats why our main database is mostly numbers. Its cheap to look for numbers rather than other things like strings.
I hope this provides more information on how it works and why. Its 3 AM and i'm tired so i likely fuged up something. (Hopefully Dries007 doesn't kill me
) Feel free to correct me!
Side note: DoubleDoorDevelopment is something Dries and I are both equally part of. Sometimes i don't make this clear enough and it's stupid of me. He codes, I do everything else. (I know pathetic amounts of java) We have an extremely odd relationship compared to most of the modded community. He deserves way more credit than what appears! Im not trying to hide or steal any of the work he does. This is a whole other topic that i could write an equally large amount of information on. I <3 mah buddy Dries007