Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Easy, fast, lossless GMail backup.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 package.json
README.md

Quick Start

First, be sure to install node. Once that's done:

$ npm install -g gmail-safe
$ gmail_safe ./download/directory -u USERNAME -p PASSWORD --incremental

The specified directory will be created with the 0770 permission code if it does not already exist, and the database will be initialized if it does not yet exist.

About

gmail_safe was inspired by a desire to back up my Google Mail. I surveyed some of the options already available but could find none that met all my criteria:

  • Run decently fast
  • Support incremental backup
  • Can be run in the background (eg. from a cron script)
  • Save thread information (Google Mail 'conversations')
  • Save Google Mail labels
  • and Save attachments & alternate bodies in the standard email format

gmail_safe does all that, and it does it fast (I get about 20 emails per second) and without using much CPU or RAM. Perfect for a cron job.

Installation

Currently gmail_safe has an external dependency you will need to install yourself:

From there, just follow the quick start guide.

Note: be sure to install gmail_safe using npm install -g gmail-safe - without the -g (which tells npm to install the gmail_safe executable globally) or the environment will break and gmail_safe will not function. If you know why, please file an issue to help point me in the right direction.

FAQ / Troubleshooting

  • Q: How can I run gmail_safe from a cron job?

    A: gmail_safe can be very easily stored as a cron job using the -i and -c FILE options, as well as redirecting the output to /dev/null. (Better logging is a planned feature.) Writing the cron job is beyond the scope of this README, but it isn't hard to do. Here is an example config file:

       {
          "username": "your_username@gmail.com",
          "password": "your_password_OR_app_specific_passphrase"
       }
    

Planned Features

  • Better backgrounding support (supress stdout & progress bar)
  • Metadata transfer/import

Most of these features are fairly simple to implement - mostly I just need motivation. So if you want this feature (or any other!) just file an issue on github.

Legal Boilerplate

This project is Copyright (c) 2012 Erich Blume <blume.erich@gmail.com>.

Google and Google Mail are trademarks owned by Google. I am not Google. I do not own these trademarks. Hopefully everyone understands that this modest little app only serves to increase Google Mail's adoption, by whatever small amount.

This project is licensed under the MIT license, which is a permissive open-source license. See the LICENSE file for the full terms of the licensing. If this project didn't come with a LICENSE file, then someone messed up (probably me) and you can get a copy at http://www.opensource.org/licenses/mit-license.php.

Something went wrong with that request. Please try again.