9

This question already has an answer here:

How can I backup my whole system and be able to restore perfectly to where I was? I have installed some nice themes and customized quite a few things (graphically) and wouldn't want to repeat this process if I need to re-install.

I guess my question is, do I have to only backup the home folder or do I have to do the whole system root folder. Many topics have advised not to backup the root folder but has let me confused.

I have no problem installing Ubuntu from scratch again and importing my home folder, as long as it gives me everything back in terms of the UI and custom themes etc. I am not fussed about the actual data such as Documents, Videos etc. I have alternative methods for these via cloud based solutions. Also, I have some commands in fstab but not sure this is stored in the home directory as well?

My idea was to use rsync and use

sudo rsync -aAXv --delete --exclude=/dev/* --exclude=/proc/* 
  --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* 
  --exclude=/media/* --exclude="swapfile" --exclude="lost+found" 
  --exclude=".cache" --exclude="Downloads" --exclude=".VirtualBoxVMs" 
  --exclude=".ecryptfs"

Then setup a cron to schedule this.

Can you help?

marked as duplicate by Martin Schröder, Pilot6, Braiam, karel, Eric Carvalho Mar 11 at 22:48

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

5

Clonezilla to the rescue. Atrocious console interface but gets the job done reliably.

Download image and make a bootable USB drive from https://clonezilla.org/

Boot Clonezilla from USB drive and back up your drive and/or partitions to USB drives or sticks for easy restore. Don't let the UX scare you, it really works.

  • Thank you, i' ve thought about this but i was thinking of a more automated way to backup to my NAS, possibly in an incremental way. However, i appreciate this very much. – Maverick32 Mar 11 at 12:20
8

The reason of the advices to not backup the "/" folder is this: typically, there are many virtual (and, sometimes, physical) filesystems attached to it. A virtual filesystem is like a /proc: it doesn't have physical files on the hard disk, instead listing/reading/writing their file structure manipulates some data structures of the kernel. For example, writing 1 into /sys/bus/pci/rescan doesn't write anything to anywhere on a hard disk, instead it re-scans the PCI bus for new devices.

Backing them up would be meaningless or they might be even harmful.

If your goal is to back up everything, then the best what you can do is that you back up everything. However, backing up / might be problematic because of the problem above.

However, there is a simple trick to solve that. Linux knows the thing so-named bind mount: it means, that you can mount a filesystem multiple times.

For example, a

mount /dev/sda7 /mnt/root

will mount your root filesystem (considering if your root is, for example, sda7) to the directory /mnt/root. You will see everything in it, except any sub-mounts, including the virtual filesystems.

The trick is this: after that, you can safely backup /mnt/root with any tool you wish to, including rsync.

Note also, this is only a recursive file copy. You have no protection for possible file inconsistency issues what happen. Imagine if a database has two files, for example, /var/lib/postgresql/11/main/base/13731 and /var/lib/postgresql/11/main/base/13732 which refer to eachother. If the database engine writes something into the first and to the second, while your backup process runs, then it is possible that the first will be backed up and the second won't. Thus, your database will become crap after a restoration.

This is also a reason, why you will probably find contra-arguments (sometimes quite vehement ones) against backing up your system on this way. However, in practical, user-level use cases, a real problem such this exists only very rarely, maybe the most typical one is when you are playing with a database for some web development task. In a home environment, I simply ignore this problem. In a professional environment, it is practical to use another, different backup for your data which is sensitive for this.

  • Thank you for the much detailed response here!! I'm new to linux (from windows) and i'm not really looking to do any web dev or db work but value your response as it gives me a bigger scope on what could happen in the future. May i ask, what you would recommend for me? I really just want to keep my nice looking UI with the custom themes i have put on. Would backing up the whole home folder only suffice? – Maverick32 Mar 11 at 12:25
  • Just to add, I'm looking to back this up to my NAS which has a ext4 filesystem. Your suggestion seems ideal by mounting the root dir and then using rsync. I'll give that a go :) – Maverick32 Mar 11 at 12:31
  • @Maverick32 Don't worry, rsync is pretty okay! Run it from cron and it will work. I use rsync for pro environments, too (with a litte bonus scripting). The important thing is, that you don't need to play with sub-mounts and sub-mounts on this way. Insert this /mnt/root thing into your fstab, and run the rsync tool from cron. If you set up a local mailing system, you will get your daily (weekly?) backup report log into your mailbox. So it will near a pro system. – peterh Mar 11 at 12:38
  • @Maverick32 Your NAS doesn't need to use ext4, any unix-compliant fs will be okay (samba on linux is usable for w$es, too, but it is still uni-compliant). Check also your rsync flags, it should also copy hard links. I use rsync -vaH --delete src/ target/ which looks like an abbreviation of your rsync. If your NAS is Linux-based, it is using probably ext4. – peterh Mar 11 at 12:40
  • Note for the postgres example, an inconsistent backup is solved with WAL archiving. – OrangeDog Mar 11 at 13:14
2

If you really want to have a backup of just your themes and customization, then you don't really need to make a backup of your whole system. You just need to make a backup of some of your dotfiles.

For example, the changes you made for your windows are in ~/.config/gtk-3.0/settings.ini file. Most of the programs that you install will have a configuration file in ~/.config directory, you just need to make a backup of those configuration files.

  • This sounds great, although i would have no idea on what particular files i should be backing up for this purpose? – Maverick32 Mar 11 at 12:21
  • It actually depends on what you want to backup. For example, if you made some changes for VIM, you want to backup your ~/.vimrc – Nomi Shaw Mar 12 at 7:26
  • Sorry to reopen an old post. I was wondering, if I copy my home directory only and restore it to a new install of Ubuntu (same version 18.04) would it retain everything I need? As all my config files are there I guess? Any downsides here? Permissions? – Maverick32 Jun 4 at 19:54
  • Yes, it will retain everything except for the packages that need installation. – Nomi Shaw Jun 13 at 4:45

Not the answer you're looking for? Browse other questions tagged or ask your own question.