I use 2 different computers in 2 different locations both running Universal Blue.
I was wondering if there is any way to create a backup system where i could backup Computer1 over the internet to Computer2 and continue work like nothing happened with all the user data and installed applications being there. The goal is to only need to transfer the user data/applications and no system data (that should be the same for both because of Ublue, right?), to keep the backup size small.
To be clear, i need help figuring out the backup part, not the transfering over the internet part.
If I were to backup the directories on Computer1, which store user data, with for example borgbackup, could I restore them on Computer2 and have a working system? Or would there be conflicts because of more low level stuff missing like applications and configs? Which directories would I need and which could be excluded?
Is there a better option? Any advice is appreciated!
I also came across btrfs snapshot capabilities and thought they could possibly used for this. But as far as I understand it, that would mean transferring the whole system and not only the data and applications. Am i missing something?
two ways syncthing
or 3 way with an always on server (like a raspi or cheapest VPS with just enough storage) so that you don’t have to have both computers on at the same time (thats what I am doing currently and it works great).
I use syncthing for this purpose all the time. I seemlessly move from my work PC, home PC or laptop. I sync my data directories and most of my config settings. some are different per system (monitors, etc). 10/10 highly recommend
Question if you don’t mind: is it theoretically possible to use syncthing on the root directory of a given arch install, somehow blacklist hardware specific components, and basically have a running clone between both systems? I’ve never heard of syncthing before this but it sounds intriguing
I am not sure technically, but even if possible it would be a nightmare of constantly resolving conflicts, since a lot of system files are constantly written to and read from and it would mess everything up if syncthing is overwriting the file at the same time.
As a sysadmin I would try making the PC’s hypervisors and syncing a VM? Might be over engineered but I think it would work.
Syncthing could do it.
This should work, as on Linux you can also share a home directory. In my experience (using the same home partition for different installations) there might be minor issues like a additional plasmoid not working on both systems, although this was on two different distros so you may not experience any issues.
Regardless of what technical solution you decide to rely on, e.g borgbackup, Synchting or rsync, the biggest question is “what” do you actually need. You indeed do not need system files, you probably also applications (which can fetch back anyway) so what left is actually data. You might want to then save your ~ directory but that might still conflict with some things, e.g ~/.bashrc or ~/.local so instead you might want to start with individual applications, e.g Blender, and see where it implicitly or you explicitly save the .blend files and all their dependency.
How I would do it :
- over the course of a day, write down each application I’m using, probably a dozen at most (excluding CLI tools)
- identify for each where data is stored and possibly simplify that, e.g all my Blender files in a single directory with subdirectory
- using whatever solution I have chosen, synchronize those directories
- test on the other device while being on the same network (should be much faster and with a change of fixing problems)
then I would iterate over time. If I were to often have to move and can’t really iterate, I would make the entire ~ directory available even though it’s overkill, and only pick from it on a per needed basis. I would also insure to exclude some directories that could be large, maybe ~/Downloads
PS: I’d also explore Nix for the system and applications side of things but honestly only AFTER taking care of what’s actually unique to you, i.e data.
Thank you for the detailed response! Yes, the what data and how to not create conflicts has been troubling me the most.
I think I might first narrow it down with test VMs first, to skip the transfer part, before I actually use it “in production“.
Honestly a very imperfect alternatives but that’s been sufficient for me for years is… NextCloud of documents.
There are few dozen documents I need regardless of the device, e.g national ID, billing template, but the vast VAST majority of my files I can get on my desktop… which is why I replied to you in depth rather than actually doing it. I even wrote some software for a “broader” view on resuming across devices including offline, namely https://git.benetou.fr/utopiah/offline-octopus as a network of NodeJS HTTP servers but … same, that’s more for the intellectual curiosity than a pragmatic need. So yes explore with VMs if you prefer but I’d argue remain pragmatic, i.e what you genuinely do need versus an “idealized” system that you don’t actually use yet makes your workflow and setup more complex and less secure.
There is the overkill method of proxmox clustering VMs. You could work from a cloud instance of your distro. There is NixOS, you would clearly define your whole system and then back up and import your home folder when switching between the PCs. Since you are using an immutable distro already you can probably skip nix and use a onedrive type solution setup to sync your home directory. I havent used it but other people have suggested Syncthing and it seems like it would work for your use case and be the simplest option.