Hi everyone!
I now have 4 computers running Linux, each with an almost perfectly set up distro (which took days to perfect) and would want to create backups so that I can move and restore these between all of my computers.
Here is a list of my computers:
Surface Go 1 128gb SSD 8gb of Ram running Fedora Silverblue
MacBook Pro 2012 (upgraded with 512gb SSD and 16gb of Ram) running Pop!_OS
NUC7i3DNB 128gb SSD 8gb of Ram running LibreELEC
Steam Deck LCD 256 SSD 16gb of Ram running Steam OS
I was planning on using Clonezilla to create backups of these, store them somewhere (kDrive and external hard drive) and be able to restore these between each of these (and my future) computers if needed.
I’ve succesfully used Clonezilla in the past, but I’ve also encountered a dead end issue when trying to restore my Surface Go 1 backup on an old Acer (probably 5737Z) I had lying around. I don’t remember what the problem was, but something related to UEFI and EFI legacy stuff I think…
So, as all these computers are quite different and not all of them so Linux friendly, I wanted to know if you think I’ll encounter issues when trying to move installs between them or not.
In order to save space, I’d probably shrink every partition so that it’s the same size as the data it contains and then extend it again once restored on another computer.
Thanks in advance for your help!
Consider your perfect settings as the part you want to keep (as well as all your documents etc, of course), but the OS will change.
Tomorrow you’ll do an update and 2 applications and 10 libraries are now newer… so you probably don’t want to store a “golden image” for too long without redoing it to consider all the updates.
Now… with that situation in mind, it’s generally easier to just do a clean install of the distro and reapply your settings.
So, depending on what you’ve setup, installed, tweaked & configured, saving that can be done with config files in
/etcand/homeand maybe a 1-liner for applications to install.That will be smaller and more easily reproducable on all your hardware (and maybe some VMs)
How you do that depends on what you’ve changed and your skills… maybe bash, maybe ansible, maybe just copying files - whatever makes sense to you.
maybe ansible
I’ve done Ansible professionally for 3 years, now. I’ve used puppet, chef/cinc, I’ve played with mgmtconfig, and I’ve built entire ecosystems out of cron+make+rpm since 2002, 6 years before ‘devops’ had a name.
Don’t use Ansible. EVERYTHING ELSE is better. Please consider any option before it. Strongly consider mgmtconfig.

As others say, where the use cases are so specific to each machine, it’ll be a headache juggling all of those images if your needs and workflow change down the road.
But I’d be remiss to say I don’t practice a form of what you mention, I would go insane if I actually had to reinstall from distro defaults. I have a single perfected VM image with customizations and software common to all of my machines. And yes, if you were to go this route, there are little quirks to iron out manually each time I image to a new machine, even old and well-supported ones. Some just cosmetic, some preventing graphical output. Although still much less time than setting up from scratch.
It works well enough for me, but it also frankly leads to a poorly-documented system that will accumulate cruft with updates, and can’t propagate changes in the VM to my existing systems easily, so I’m interested too to see what other people here suggest. Particularly for those niche customizations that land outside of /home and /etc (e.g. /usr/fonts, packages not provided by the distro).
I understand where you are coming from but I would take the opposite approach, namely not how quickly and conveniently you get back to exactly the same state (because that’s actually really hard) but rather how quickly and conveniently you can get to work, or play, or do whatever you do, from the most generic of hardware and software, including of course yours. What this perspective suggests though is NOT to consider your stuff precious but on the contrary, to assume it will inevitably disappear, due to any reason, from a freak event, e.g stolen to the mundane, e.g. hardware failure over time.
IMHO it’s much more relaxing to consider hardware disposable. My own heuristic for this is to understand what a distribution does, save only MY data (e.g. things that I produce, for example in a data it would be my saves but not the game itself) and buy only well supported hardware.
Anything that creates a reproducable build for you is fine; however, learning Ansible (or Puppet, etc.) puts you on the road to being able to do that sort of thing professionally.
I mostly backup /home and /etc on my home machines. Anything else I can recreate with configuration-as-code tools like Ansible.
Could you tell me what’s supposed to be in /home and what’s supposed to be in /etc ?
What do you do when you install a new install? You replace the installed version of these with your old version?
Your best bet is to set up bash scripts instead that downloads packages and copies/compiles every single thing you need. Then send em to gitlab.
t. That is what I do.
For me that would be a waste of time. Just because my setup seems perfect today, tomorrow I might decide to make changes to accommodate a new task. My pc’s are living breathing machines that are always a day or 2 away from a slight tweak.
When I move to a new machine, I rarely want to replicate another machine I have as then I would have 2 machines setup for the same tasks. Each machine serves a different purpose so needs a different setup.
If I am replacing a machine, then I would transfer the physical disk itself. Only use clonezilla type tools for replacing a disk, as in replacing the sata SSD holding root with a new fast nvme.
It’s easy to transfer config files from one machine to another if you want to replicate some specific setups.
What do you do when you need to restore from failure, for one of those specific tasks? Just build from scratch every time?
What sort of failure? A harddrive failure? I have never had a disk completely fail where every bit of data is unreadable.
An alternative to complete cloning (which gets out of date fast) would be to manage systems with ansible.(or puppet, or chef).
You can script configurations, package installs, users, etc. And it also allows for hardware/architecture specifics when needed (e.g. drivers for the different platforms).
You would then just install a base os and run your playbook. No need to store gigs of data and easier to update the base os to newer versions. You could even mix
You can also push out changes without needing to snapshot a new image and re-install it everywhere.
They are all different hardware so you’ll run into issues where the system has drivers or settings for the original hardware that is different on the next hardware.
Lots of drivers are already in the kernel, but I think you’ll find your better off using NixOS or MicroOS and making a proper install recipe.
I don’t know if it’s useful, but they are all running distros with only default settings changed and program installed.
The only modification I’ve done is installing some broadcom drivers for the MacBook. The rest is quite stock/vanilla except extensions and workflow tweaking.
Well you might have luck if the systems aren’t using proprietary drivers for network or GPU.
If you’ve setup the system for hibernations then it will have a swap partition sized to the memory. So that will need to be the biggest RAM machine as a start point.
There are some methods to check what kernel modules were included in your install. You would want to check if all machines have the same kernel modules for compatibility between them
With standard PC hardware, that would work.
Some things like firmware or drivers can be auto-detected and installed on demand. Symptom would be that e.g. your WiFi or video card does not work.
The safe way is to back up user data (including config) and install newly. This will work almost always as the kernel provides hardware abstraction - that is its main purpose.
Installers like Debian are also quite quick… quicker than restoring a backup.
But would backing up user data really make me able to install the same distro on a new computer without having to set up anything?
Linux has a strict separation of user data and system.
Anything that you can configure and adust without entering the root password is stored as user data in your home account.
If you back it up and restore it on another computer with the same distro, it will work.
But would this include how my dock is configured, what extensions I’m using, what programs are installed and things like this?




