How to back up and restore Gmail account on Linux

Google Gmail is the most widely used web-based email service as of today. As a Gmail user, you may want to maintain a separate backup of all email messages in your Gmail account for personal archiving purpose. Email back up is also useful in case you want to change your Gmail address to a different one, or switch to a completely different email provider.

To handle this kind of Gmail backup and restoration, you can use Gmvault, which is an open-source Gmail backup software written in Python.

In this tutorial, I will describe how to back up and restore a Gmail account on Linux with Gmvault.

Install Gmvault on Linux

To install Gmvault on Linux, you can use the standard Python package installation method with Pypi. As of this writing, the latest version of Gmvault is 1.8, which I will install in the following.

First download the latest Gmvault source distribution on Pypi. It will be saved as gmvault-1.8-beta.tar.gz

To install Gmvault on Debian, Ubuntu or Linux Mint:

$ sudo apt-get install python-dev python-pip gcc
$ sudo pip install virtualenv
$ tar xvfvz gmvault-1.8-beta.tar.gz
$ virtualenv --no-site-packages gmvault-1.8-beta
$ cd gmvault-1.8-beta/bin
$./pip install --pre gmvault

To install Gmvault on Fedora, CentOS or RHEL:

$ sudo yum install python-devel python-pip gcc
$ sudo pip install virtualenv
$ tar xvfvz gmvault-1.8-beta.tar.gz
$ virtualenv --no-site-packages gmvault-1.8-beta
$ cd gmvault-1.8-beta/bin
$./pip install --pre gmvault

After installation, an executable named gmvault should be created in gmvault-1.8-beta/bin directory.

Back up a Gmail Account with Gmvault

Before backing up your Gmail account, you need to change the settings of the account. For that, go to the Gmail settings:

Under "Forwarding and POP/IMAP" tab, enable IMAP, and disable folder size limits (i.e., number of emails per folders).

Under "Labels" tab, make "All Mail" and "Chats" folders available in Gmail IMAP. Save the changes in the settings.

Now create a local back up of your Gmail account by running the following command.

$ cd gmvault-1.8-beta/bin
$ ./gmvault sync

The above command will prompt you to press ENTER as shown below.

Once you press ENTER, it will pop up a web browser window, asking you to log in to your Gmail account (if you are not logged in), and authorize Gmvault to access your Google account.

Once you have successfully granted Gmvault access to your Google account, press ENTER in the terminal to proceed. After that, Gmvault will start downloading all your email messages.

By default, Gmvault will archive your Gmail messages as gzip-compressed plain texts in ~/gmvault-db.

If you want to back up you email box on a daily basis, you can run the
following command instead. This command will update an existing Gmail backup with only the last 7 days of emails, so it is much faster than full backup.

$ ./gmvault sync -t quick

There are other options used to customize Gmail back up process.

gmvault sync [-d DB_DIR] [--resume] [--emails-only] [--chats-only] [-e] [-m] [--no-compression] gmail_address
  • -d DB_DIR : Gmail database root directory. (default: $HOME/gmvault-db)
  • --resume, --restart : Resume the sync action from the last saved gmail id
  • --emails-only : Only sync email messages.
  • --chats-only : Only sync chat messages.
  • -e : encrypt email messages stored in the database
  • -m : back up multiple Gmail accounts in one database.
  • --no-compression : disable email storage compression (gzip).

If you choose to encrypt your emails in the database (with "-e" option), Blowfish encryption is used to encrypt downloaded email messages, and an encryption key is automatically generated and stored in ~/gmvault-db/.info/.storage_key.sec.

Restore a Gmail Account with Gmvault

If you want to restore a Gmail backup into your existing Gmail account (to restore any accidentally deleted email messages), run the following command.

$ ./gmvault restore

You can also restore an existing Gmail backup to a different Gmail account (to change your Gmail address). Just specify your new Gmail account in the command. In this case, you will need to log into the new Gmail account, and grant access.

$ ./gmvault restore

Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.

Support Xmodulo

Did you find this tutorial helpful? Then please be generous and support Xmodulo!

The following two tabs change content below.
Dan Nanni is the founder and also a regular contributor of He is a Linux/FOSS enthusiast who loves to get his hands dirty with his Linux box. He likes to procrastinate when he is supposed to be busy and productive. When he is otherwise free, he likes to watch movies and shop for the coolest gadgets.

9 thoughts on “How to back up and restore Gmail account on Linux

  1. This is a great article, Dan! I found it really beneficial, and this was the only page that was able to help me download, install, and then actually open and use gmvault, so thank you for that! :-)

    I had three questions:

    1. Two E-mails in One Account: What are the drawbacks of doing this? It seems the creator of gmvault recommends having them in different folders. Does it mean restoring my emails will cause problems? I personally don't mind if they're in one place. I noticed that, for example, if I delete an e-mail in my gmail account, it won't be deleted in gmvault because two accounts are associated with my folder. For me that's actually great because I didn't want them to be deleted anyways.

    2. Encrypting and Decompressing/Extracting Emails Already Downloaded: Is this possible? Or can I only do it for newly downloaded files from now on? I realized that I downloaded tens of thousands of emails and chats, but they're compressed and not encrypted.

    3. Script: How can I set gmvault up to sync on a daily or weekly basis automatically in Debian?

Leave a comment

Your email address will not be published. Required fields are marked *