85

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?

user394
  • 14,404
  • 21
  • 67
  • 93
  • 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 Apr 20 '19 at 14:22
  • @Andrew good question -- maybe a new post? – user394 Apr 23 '19 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 Apr 23 '19 at 19:20
  • 2
    +1 for not using "backup" as a verb. I get tired of seeing otherwise intelligent people use it that way. – Tom Russell Apr 06 '21 at 06:01

7 Answers7

119

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).
  • 1
    etc keeper is a good way to backup the /etc folder. – jonathancardoso Jan 30 '18 at 03:52
  • is there stuff inside /etc that you dont need to back up? – DeveloperACE Aug 27 '18 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 Aug 28 '18 at 18:56
  • @Kritzefitz could restoring files like, for example /etc/shadow to a fresh install cause problems though? – DeveloperACE Nov 01 '18 at 21:13
  • or is any of it hardware/device specific? – DeveloperACE Nov 02 '18 at 03:58
  • @DeveloperACE Restoring /etc/passwd (and /etc/groups similarly) might cause trouble if the UUIDs in the restored file don't match up with the file from the fresh installation, though backing it up might still be desirable, so you at least know which users you had created previously. Generally it is also possible for stuff in /etc to be hardware specific, though it's not easy to say what exactly. – Kritzefitz May 07 '19 at 11:18
  • I have my backup script in /etc/cron.daily/ I never edit any of the crontab manually, did in the past with (sudo) crontab -e so this is stored in /var/spool/contabs ? so I guess I can just exclude /var/spool entirely. Seems like a bad folder to store these. – redanimalwar Apr 23 '22 at 10:14
  • PC Gaming Wiki currently knows about two roguelike games which save to /var/games/. – user598527 Apr 08 '23 at 16:02
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.

xenoterracide
  • 59,188
  • 74
  • 187
  • 252
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".

  • 3
    you forgot /home – xenoterracide Aug 23 '10 at 13:52
  • 5
    hu, no, I wrote "The user-based applications have their configuration in your home directory". – Luc Stepniewski Aug 23 '10 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 May 17 '16 at 02: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. – Pierre-Yves Le Dévéhat Sep 06 '18 at 07: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.

gvkv
  • 2,738
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.

jaddle
  • 31
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.

Mat
  • 52,586
Quran
  • 21
  • 2
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

redanimalwar
  • 1,057