86

What are the directories one should back up, in order to have a backup of all user-generated files?

From a vanilla debian install, I can do enough apt to get the packages that I want. So if I don't want to backup the entire system, where all in the filesystem do user-generated configuration and data files reside?

4
  • 5
    Missing in all of these answers is what happens after you back the files up... Do you just copy them back once the new install completes? What problems could arise when you do that?
    – Andrew
    Commented Apr 20, 2019 at 14:22
  • @Andrew good question -- maybe a new post?
    – user394
    Commented Apr 23, 2019 at 12:33
  • 1
    I think I'm just identifying a flaw that even Linux has. Hopefully maybe it will affect future design of the OS.
    – Andrew
    Commented Apr 23, 2019 at 19:20
  • 2
    +1 for not using "backup" as a verb. I get tired of seeing otherwise intelligent people use it that way. Commented Apr 6, 2021 at 6:01

7 Answers 7

120

As this question has many different answers, the following list should combine the suggestions into one comprehensive list:

Under most circumstances you want to backup these:

  • /home/ for user data and configuration.
  • /etc/ for system wide configuration files.
  • /var/ contains a mix of directories you usually want to backup and those you don't want to backup. See below for a more detailed explanation.

Some more directories to consider are:

  • /usr/local/ hand-installed packages (i.e. not installed through apt) are installed here. If you have packages installed here, you may want to backup the whole directory, so you don't have to reinstall them. If the packages themselves aren't important to you, it should be enough to backup /usr/local/etc/ and /usr/local/src/.
  • /opt/ if you didn't store anything here, you don't need to back it up. If you stored something here, you are in the best position to decide, if you want to back it up.
  • /srv/ much like /opt/, but is by convention more likely to contain data you actually want to backup.
  • /root/ stores configuration for the root user. If that is important to you, you should back it up.

/var/

/var/ contains many files you want to backup under most circumstances, but also some you don't want to backup.

You probably want to backup these:

  • /var/lib/ this directory contains variable state data for installed applications. Depending on the application you want to backup that state or you don't. If you want to be on the safe side, you can just back up everything. Otherwise you can look at each sub-directory and decide for yourself if the data contained is important enough to you to back it up.
  • /var/mail/ you normally want to backup local mails.
  • /var/www/ if your web root is located here and this is the only place where your web content is stored, you want to back it up.
  • /var/games/ you may want to backup these, if system wide game data is important enough for you (not many games use this storage though).
  • /var/backups/ usually contains files that are automatically generated from other data that you usually want on a backup, but that would take an unnecessary amount of space in the backup or is otherwise cumbersome to backup. For example dpkg dumps a list of installed packages here, so you can later know which packages to install after restoring the backup. You probably want to backup this.
  • /var/spool/cron/crontabs/ might contain many commands or a complex schedule, even with dependencies on other systems, that has taken considerable effort to put together.

You probably don't want to backup these:

  • /var/cache/ contrary to the name, some contents of this directory are important, so check each subdirectory individually, as a rule of thumb, everything you put here yourself is important. You also might want to backup /var/cache/debconf/.
  • /var/lock/ locks usually (always) don't need to be backed up.
  • /var/run/ contains data that is only important for your running system, i.e. when you shutdown you system, it will not be needed any more.
  • /var/spool/ (other than /var/spool/cron/crontabs, see above) normally important data shouldn't be stored here, but you might want to check.

You have to decide yourself on these:

  • /var/local/ you normally know if you stored something here and whether you want it on a backup or not.
  • /var/opt/ see /var/local/ or better check if something important is stored here.
  • /var/log/ depends on whether your logs are important to you and if you have enough space to store them (they might take a lot of backup space over time).
8
  • 1
    etc keeper is a good way to backup the /etc folder. Commented Jan 30, 2018 at 3:52
  • is there stuff inside /etc that you dont need to back up? Commented Aug 27, 2018 at 19:44
  • DeveloperACE: Usually not. /etc contains system wide configuration files. Normally you want to backup configuration, so you don't have to reconfigure everything when your life data gets lost. Arguably you might not want to backup all the configuration files you never changed and are thus still the original default configurations, but I know of no backup software that makes this distinction easy enough to be worth the effort.
    – Kritzefitz
    Commented Aug 28, 2018 at 18:56
  • @Kritzefitz could restoring files like, for example /etc/shadow to a fresh install cause problems though? Commented Nov 1, 2018 at 21:13
  • or is any of it hardware/device specific? Commented Nov 2, 2018 at 3:58
19

You'll be backing up some 'garbage' doing this... but if you just backup all of /home, /etc, and /var/ you should have everything (unless you know you put something somewhere else). You'll want to leave out /var/tmp, /var/run/, /var/lock for sure. After that I'd read Luc's reply.

2
  • 14
    How about /root?
    – Tik0
    Commented Dec 26, 2014 at 15:02
  • 9
    or /opt or /usr/local ?
    – tgharold
    Commented Apr 3, 2016 at 17:25
16

It depends on what you mean by "user-generated". Most of the configuration you will have are about services/daemons and applications running on your system. Most of them put their configuration in /etc. The user-based applications have their configuration in your home directory (usually in a application directory). But you can have some applications that also store their data in /var/lib or /var/spool.

So the answer, is: "it depends on what you're running on your machine".

4
  • 3
    you forgot /home Commented Aug 23, 2010 at 13:52
  • 5
    hu, no, I wrote "The user-based applications have their configuration in your home directory". Commented Aug 23, 2010 at 14:59
  • 2
    I really think that this question should end in something like a list of "needed folders" plus "optional" ones, plus your own files. By example, a list of the opposite could be good, so, folders you don't need to keep, like /dev, /mnt, /sys, etc.
    – m3nda
    Commented May 17, 2016 at 2:32
  • 3
    Note that you can install and use etckeeper (available on Debian at least). It initiate a git repository in you /etc directory and allow you to version your configuration changes. Commented Sep 6, 2018 at 7:32
3

In short, you want to backup /home (generally where user-generated files reside), /etc and /usr/local. The last two will backup your configuration files. I would recommend using some backup software like sbackup which does what you need and is easy to use.

3

A few other directories to keep in mind - most people won't have anything in these, or they might not even exist, but in some cases, you might find something important!

/usr/local
/opt
/root

On my system, /usr/local has some custom system scripts in it, /opt has some games that were installed by downloaded packages (i.e. not .deb packages) and /root has a few configuration files that get used by the admin user.

2

This depends on applications and services you installed, and what version of Linux you are using. Most settings are in /etc, so this is an important folder to backup.

2

Just to improve on the accepted wiki answer, my backup script and seeing what bloats up my HDD with baobab.

  • /var/lib/snap is currently almost 20GB on my drive. It contains LOTS of snaps because my rsync script never deletes things. It contains tons of snap apps in /var/lib/snap/snaps and /var/lib/snap/seed/spaps and other stuff related to snap but AFAIK the user data for snaps app and the config is kept in /home/username/snap so I do not think there is a need to keep all these files.

  • /var/lib/flatpak - same as above, I do not use it anymore, but I think I had just one or 2 apps installed with it a while back. Its already 3,6 GB

  • /var/apt/ I do not think we want to keep this. Just stuff related to debain/ubuntu package updating ...

  • /var/dpkg/ Same as above

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .