I want to keep everything on my own infrastructure, without relying on Google backup or the like. Sync needn't be realtime, nightly is fine. The devices should be kept as similar as possible - settings, apps, data etc. I'll only use one at a time (one "master"). In a perfect world my service provider, appstore platform, app publishers, etc. wouldn't be able to tell the difference (although I realize that might be asking too much). I don't mind using an alternate flavour of Android if needed eg. LineageOS, GrapheneOS, etc.
Has anyone accomplished this and gotten it working smoothly in practice? Any tooling you can recommend to help?
Any application that stores any data in the Secure Element of the phone is, by design, not capable of being backed up, even with root. Examples include various bank apps that serve as 2-factor authenticators.
Without that, one of the possible solutions is to use NeoBackup on a rooted phone so it backs up everything daily to some external server on your infrastructure. It can be, for example, a NextCloud server.
Settings and some apps aside, I otherwise basically do this myself. I keep my last model phone as the fallback and use Syncthing to copy pictures, SMS and call log exports, TOTP exports, Signal backups, and any other useful files automatically to it. Contacts and everything else is cloud already. Would take about 10 minutes to reimport and start using.
The advice would change if you’re domestic (staying in the same country as your service provider) or international. If you’re domestic then eSIM is the way to go here, you can have a new one issued and activated fairly quickly. If you’re international you can either move to a VOIP provider or use some service (like a Matrix bridge) to share SMS messages across. VOIP would be your only real option for calls as well - both phones would just be SIP trunks and can be hot swapped or used simultaneously.
There also was a free software used by phone repair shops that could clone the entire device... If I find out it's name again, I'm gonna post it here.
[1]: https://www.fjsoft.at/en/ [2]: https://github.com/immich-app/immich
I feel like this is better accomplished with a device snapshot-image that is regularly loaded onto a new device (daily? Hourly?)
Updating a device makes automation non trivial as you have to do something physical most likely and can’t just do it via API
You could even just skip acquiring the device until you need it given the idea that it may be years before you have this volcano situation. However that doesn’t meet your spec precicely
I would better define the idempotency interval you’re ok with losing data between and then using the method that updates the simplest at that frequency
With root, some app to do backups and restores of system/app data (which is why you'd need root), + syncthing, you can probably get 99% of the way there.
Buuuut... You now have the problems of root, which means a lot of apps won't work out of the box, you'll have to do some per app config to hide root/unlocked bootloader from them, and that's only getting harder.
So tl;dr don't use smart features, and only deal with syncing calls/sms/photos. The rest you do via the browser.
So all in TQQQ.