I have, mostly. The problem was I trusted the automated cloud backup, thinking Cisco knows what they're doing when designing their app.
Aegis is taken care of. It automatically creates one file for each update, and keeps them. That gets picked up by rsync.
KeePassXC unfortunately only keeps the last 1 version. Good enough if something screws up while saving, but otherwise kinda sucks.
Anyway, all syncs are manual, and only happen in one direction as I don't plan to generate passwords on my phone.
In case of corruption, KDBX doesn't unlock. Though I guess there could still be some silent screw-up during the saving process, so I might have to do version control anyway.
Currently the only place where all (major) past versions live is a CD, because that's a WORM medium. That one is also least convenient to use. Take a copy of the databases, generate PAR2 files with 500% redundancy and 512B block size (because they're tiny anyway), generate checksums, load disc, load old session, create dir with current date, put new files there, burn, verify.
I am not really sure how to handle it. Perhaps I should learn git.
Edit 1: Nevermind, I am idiot. The backup format also has a {TIME:<format>} option. I'll use that from now on. {DB_FILENAME}.old.kdbx is just the default.
Edit 6: Removed unnecessary text.