Your submission was sent successfully! Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

You have successfully unsubscribed! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates about Ubuntu and upcoming events where you can meet our team.Close

How to backup your application settings

Igor Ljubuncic

on 28 February 2019

This article is more than 5 years old.


A reliable data backup plan should be an integral part of everyone’s software arsenal. If you accidentally delete your files, or something goes wrong in your setup, you will have your data safely stored in another location. This will allow you to recover quickly and resume working. Likewise, if you suffer a hardware failure or lose a device, you vital data will still be available and intact.

Data loss is a function of time. It is not the question of if, but when. Unfortunately, few people place sufficient emphasis on backups. In this article, we’d like to show you how you can safely and elegantly protect your data with regular backups, including your application settings.

Backup types

When people think about backups, they usually think about the files they typically work with, their music collection, some office documents, maybe a photo album or two. But there’s much more to it. Backups come in three major flavors – system imaging, application configuration backups, and data backups.

  • Imaging allows you to create a snapshot in time of your operating system, which you can then revert to at a later point. Restoring an image means any change introduced to the system after the snapshot was taken will be lost if you revert back to the previously created image.
  • Data backups essentially mean copying your personal files, like documents, photos and other content to other media, both offline and online.
  • Application configuration backup is the trickiest of the three, as it sits between the system and personal data. On one hand, it’s not system data, because it depends on the user’s choice of software. On the other, it’s not strictly personal data, because people do not directly interact with their application settings. And yet, the customization and different options we use in applications do represent personal information, and losing those can be painful. If you’ve ever needed to set up a brand new system, configuring a dozen programs from scratch to look and behave just the way you like them can be a pain.

The simple answer to that need is – backup your application settings.

In Linux, this is both easy and hard. If you backup your entire home directory, you will have effectively backed up your application settings, too. But if you only want to save the application data and not the rest of your personal files, there isn’t an immediate way to accomplish this, like you would do on a typical smartphone (where you can backup configurations relatively quickly with a single tap of a button).

The main reason for the complexity comes from the fact there is no standardized location for all applications to save their settings. Some software will place their configurations into a hidden folder or a file inside your home directory, often named after the application itself. For instance, a Firefox profile will be kept under ~/.mozilla. Then again, Thunderbird keeps its data under ~/.thunderbird. Some applications use less clearly named folders, like ~/.purple for Pidgin. Many other programs will store their configuration inside ~/.config. This is manageable, but not obvious. And it can create some difficulties if your goal is to backup only your application settings for a future install.

The manual way

If you don’t want to rely on any third-party tools, you can create your own backup script, and then execute it opportunistically or run it as a scheduled task via cron. You can use the cp command for the task, but with this method, you will only copy new files and overwrite existing files, but you will not be able to delete files in the destination (backup) folder.

A more convenient way is to use the rsync program, which has many useful flags and options. It can preserve permissions, mirror the folder structure and contents, and has a dry-run feature to lets you simulate a backup before you set it up in earnest. For instance:

/usr/bin/rsync -a /home/foo/.bash* /backup/

This command will run rsync in the archive mode, copying all the BASH shell configuration files into the backup folder.

-a, --archive      archive mode; equals -rlptgoD (no -H,-A,-X)

The archive mode means rsync will recurse all directories in the specified path, copy symlinks, preserve file permissions, owner, groups and modification times, as well as preserve device and special files. The combination of these options make the archive mode quite useful for backups.

You can extend the backup script to include multiple rsync commands, or use exclude and include patterns to fine-tune the backup procedure. Furthermore, you can use the –delete flag to delete any file in the destination that does not exist in the source, effectively creating a mirror backup.

/usr/bin/rsync -a --delete /home/foo/.bash* /backup/

The manual process can be tedious, but it is a good way to learn and understand the structure of folders and application settings in your home directory. Moreover, you have full control of the script, and you are not limited in what you want to do.

The automated way – mackup

If you are not keen on scripting yourself, you can use existing tools to do the hard work for you. A very convenient software designed to specifically backup your applications is mackup.

This is a versatile, intelligent tool designed to make application settings backup fast and elegant. Currently, mackup supports more than 400 common applications. Mackup also works with cloud backends, including Box, Copy, iCloud, Google Drive, Dropbox, and any other provider capable of folder sync. Mackup is available in the Snap Store, so just grab it:

snap install mackup --classic

Once the program is installed, the next step is to create a configuration file ~/.mackup.cfg, and then populate it with your desired backup options. If you do not, you will get an error:

mackup list
Error: Unable to find your Dropbox install =(

For instance, if you want to backup to a local folder called backups, then you would use something like

[storage]
engine = file_system
path = /home/foo/backups

You will need to create the target folder (the mackup directory will be created inside it). You can customize the name of the mackup directory name, backup only a subset of applications, exclude certain applications, and more. Once you’re happy with the configuration, you can dry-run and test (with the -n option), and finally run the script in earnest:

mackup backup

In the verbose mode (-v), you will also see the details of the run, including all the applications that were not backed up, because the specific folders do not exist. This can also help you rectify any gaps in your backup setup. For instance:

/home/igor/.bashrc
is already backed up to
/home/igor/Mackup/.bashrc
Doing nothing
/home/igor/.inputrc
does not exist
Doing nothing
/home/igor/.profile
is a broken link, you might want to fix it.
Doing nothing
/home/igor/.bash_login
does not exist

If you want to restore settings, you can run:

mackup restore

Summary

Mackup is practical utility that can save you a lot of trouble and time in having to manually organize your data. The fact it is a command line tool also allows you to include it in your scripts and scheduled runs. A great little addition that goes into the toolbox for a rainy day.

If you have any questions or suggestions regarding backups, application settings or mackup itself, please join our discussion forum.

Photo by S&B Vonlanthen on Unsplash.

Ubuntu desktop

Learn how the Ubuntu desktop operating system powers millions of PCs and laptops around the world.

Newsletter signup

Get the latest Ubuntu news and updates in your inbox.

By submitting this form, I confirm that I have read and agree to Canonical's Privacy Policy.

Related posts

Creating Snaps on Ubuntu Touch

This article was written in collaboration with Alfred E. Neumayer of the UBports Project. Tablets, phones and current technology’s capabilities are...

Managing software in complex network environments: the Snap Store Proxy

As enterprises grapple with the evolving landscape of security threats, the need to safeguard internal networks from the broader internet is increasingly...

We wish you RISC-V holidays!

There are three types of computer users: the end user, the system administrator, and the involuntary system administrator. As it happens, everyone has found...