Backing up files in Linux may seem easy, but it is challenging to backup a Linux system in a reliable and efficient way.
That is because a typical Linux server contains many different types of files. Some are more important to back up than others, and some are easier to restore to a working state than others after the system goes down.
For this reason, if your Linux backup strategy simply involves copying all directories from the system to a backup server, it is unlikely that you will actually be able to recover all of your data after a failure. You also won’t be backing up data efficiently because a full-system backup will consume much more space than necessary.
This is why you should develop a Linux data backup strategy that is tailored to your needs. The files that you choose to backup on Linux should protect the types of data -- user files, system configuration files, log files or something else -- that are important for your use cases, while avoiding needless backup of other types of files that are not critical or cannot be used effectively for system restores.
This article explains how to backup files in Linux properly - which types of data you would typically backup and how the backup process differs for various types of data.
How to Backup a Directory in Linux
Whether you run Linux on a personal computer or on a server, backing up user data is likely to be important. User data consists of the files associated with each individual account in the system.
In most cases, all user data is stored under the /home directory, and data in /home typically consists of static files that are easy to recover. Therefore an effective solution for backing up user data is to backup home directory in Linux.
Keep in mind, however, that in some scenarios /home may be mounted from a remote server over the network. In that case, you’ll want to ensure that you backup data in /home in an efficient way by performing the back up directly from the system that hosts the data. That is faster and more reliable than attempting to backup large amounts of data over the network, which can be slower.
Backing Up Linux System Configuration Files
System configuration files control the settings for your Linux system, such as which user accounts exist and which scripts should run when the system boots.
Backing up system configuration files is difficult because you can’t simply restore these files to their original locations when recovering your data and expect everything to work. Some system configuration files are modified in real time. Others depend on hardware-specific information that can vary from server to server. Therefore, a configuration file that works on one server cannot always be used on another server.
This does not mean, however, that you should not back up Linux system configuration files. They can still be useful for reference purposes. If something is failing in your new server but was working in the old one, the old system configuration files can help you to determine what has changed in the configuration that might be causing the error.
So, back up your Linux system configuration files -- but use them for reference purposes, not as the basis of data restoration.
On most modern Linux systems, like Ubuntu, system configuration files are stored in the /etc directory. However, on some distributions they may exist in other directories, or be spread across multiple directories. You should check this before developing a backup process for your Linux system.
Backing Up Logs on Linux
Logs created by your system and your applications provide a wealth of useful information for troubleshooting problems, identifying performance trends and more. Logs are an important type of files to backup because you don’t want to lose this data in the event that your server fails.
The challenging part of backing up logs is that log files are typically deleted automatically after a certain period of time. The amount of time for which the logs are stored before being deleted varies between different Linux systems and applications, so you’ll need to customize your backup strategy accordingly.
You will also need to determine how long you will retain log files within your data backups. In many cases, storing all log files forever is not feasible because they would consume too much storage space. For that reason, you’ll have to set a log retention policy. The policy should enable you to keep logs for the amount of time for which you may have a need for them -- six months to a year, perhaps -- and then cycle them out so as to avoid taking up space unnecessarily.
Log files are usually stored in the /var/log directory of a Linux server, although individual applications may store their log files elsewhere.
Other Files to Backup in Linux
Below are other examples of common types of files that you may want to back up from a Linux server or PC, depending on what you use it for:
- Web server files: If your Linux server hosts websites, you will probably want to backup the website data. In most cases the data will be stored in /var/www, but on some systems it is located within users’ home directories.
- Database files: Backing up databases is important because they contain the data used by many applications. Databases are typically stored on Linux in a location like /var/lib/mysql, but you should generally not backup databases simply by copying these directories to a backup server. In most cases, it is best to backup databases using database utilities, such as the mysql command-line client. If you attempt to back up the raw files, they may be corrupted because the databases could be in use when you copy them.
- Application files: Occasionally, you may find it useful to backup the files that allow you to run applications. These are usually stored under the /usr and /bin directories, although some Linux systems store them under /opt, like in Mac. You typically cannot move an application binary from one system to another and expect it to run; however, it should work if the systems have the same type of CPU architecture. In this case, backing up application binaries can be useful if you have custom applications that cannot be easily reinstalled using a Linux package manager.
Linux systems contain many different types of data, which is spread across multiple directories, and to make matters more complicated, not all Linux distributions store data in the same places. Also, please note that the types of data that are important to backup from a Linux system that is used for one purpose (such as serving websites) may be very different from the data that is important on another type (such as a personal computer).
For all of these reasons, you need to know how to backup files in Linux properly according to your particular needs. There is no one-size-fits-all strategy for Linux backup.