Which Folders To Include In backup?

I'm quite new to Ubuntu and want to create a backup. I'm really not sure what files and folders to include so that if I restore my system it will be as it is now. I can't seem to find good details of this anywhere. Hopefully someone could help me with this. Is it possible to backup everything as it is now so in the event of a system restore I don't have to reinstall programs and settings?


My backup sets currently contain

/etc
/home
/root
/srv
/usr (/usr/local only, nothing else)
/var (except /var/run, /var/cache, /var/tmp)

Note this is for a server, so backing up things like /etc saves all my configuration for my services, I have web servers in /srv (though if you have them in /var/www, they would still be in this backup set), I have various scripts and things set up in /usr/local, etc. Backing up /home instead of /home/myusername is so that I can preserve all users. If all you want to keep is your user data, you only need your home directory.


What you need to backup depends on your particular system*.

So this is going to take a little work on your part to sort out. Start by figuring out what does not need to be backed up. First take a look at your root directory, and then work backwards.

For example, cd /; ls -F gives me:

bin/    initrd.img@      mnt/   snap/  vmlinuz@
boot/   initrd.img.old@  opt/   srv/   vmlinuz.old@
cdrom/  lib/             proc/  sys/
dev/    lib64/           root/  tmp/
etc/    lost+found/      run/   usr/
home/   media/           sbin/  var/

/cdrom, /media, and /mnt are mount points so don't need backup.

/dev, /lost+found, /proc, /run, /sys and /tmp get auto re-created on reboot. [I'm guessing the links: /initrd.img@, /initrd.img.old@, /vmlinuz@, /vmlinuz.old@ get re-created on boot ubuntu reinstall (I'm not sure which).]

On my system /root is empty (use sudo -s to open a shell as root user to view it ... be careful to exit immediately after you inspect /root.)

/snap is also empty. Perhaps it's a mount point.

/var contains variable data like system logging files, mail and printer spool directories, and transient and temporary files." I now back it up, except for /var/log. ref: http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html)

/bin, /boot, /lib, /lib64, and /sbin presumably will get reloaded via a reinstall of Ubuntu unless you are doing system development work or something like that. You can either back these up or rely on a fresh install to recover them.

/home should be in it's own backup. There will be times when you will want to restore just /home.

That leaves other changes you've made to your system in /etc, /opt, /srv, and /usr which you will want to also backup, either together or individually.

Here are a couple of pages that might help understand these directories:

http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/the-root-directory.html http://www.tldp.org/LDP/intro-linux/html/sect_03_01.html#sect_03_01_03


A related line of thinking is: Say you just installed a fresh Ubuntu. What would you need to back up? Answer: nothing. You haven't changed anything yet, so you can simply reinstall Ubuntu. It restores /bin, /etc, /root, /usr, etc.

So the only reason you might want to backup /bin is because you have changed it or added to it. So part of backing up is understanding what is where and when it is created and modified. Just know that the rest of us struggle with this too.


*****And, although you didn't ask, one can make full disk or partition images. These take a lot of time to backup and restore and may leave your system down while that work is proceeding. And it's how I used to backup my Windows systems using Acronis. The one thing they provide you with is a partition map, and images from non-linux partitions. I now make these before I reorganize partitions, and before I test my backup restore functions.


(I'm very open to suggestions as to how I could make this better.)


If I reinstall my desktop system, I backup

  • /etc
  • /var, I'm too lazy to exclude some sub-folders
  • /opt

/home is on a separate partition and has a backup made every day.

After the reinstall, I restore the parts from my backup, which I really need.

With this strategy, all my configurations, local mails and crontab configurations are safe and I have to reinstall my needed applications only.

My personal scripts are saved in my home folder (daily backup, remember?), therefore I don't use /usr/local.