Skip to main content

Open source Google Workspace backup solution.

Project description

gwbackupy: Google Workspace™ backup and restore solution.

0.2.0 0.2.0 PyPI - Downloads BSD-3-Clause black - GitHub Actions Workflow Status Coverage Status pytest - GitHub Actions Workflow Status

What is it?

Gwbackupy is an open source Google Workspace™ backup and restore solution, written in python.

Currently supported Gmail messages and labels only.

Why?

Due to gmvault limitations:

  • is still abandoned (??)
  • authentication method is not usable in Google Workspace wide
  • designed only for gmail messages
  • only supports IMAP protocol (slow and less security)

Details

  • Run from CLI or run directly from python code

  • Authentication

    • OAUTH for free or paid plans (not recommended for paid plans)
    • Service account file (JSON) for paid plans (can be configured to access all accounts in workspace.)
  • Version controlled storage interface

    Allows to restore specific moments without using an external snapshot system (eg. zips, file system with snapshot). Not limited to file storage and is not limited to the use of a database server. Currently, file system based storage is only available.

  • Dry mode (not write to local storage and not modify on server)

  • API communication (no need for special IMAP and other settings): secure and fast

  • Gmail backup

    • full backup (download all messages, labels)

    • full backup continuously (periodically rerunning)

      Scanning the full mailbox, but download only the new messages and mark the deleted messages.

    • Quick backup (sync the last N days)

  • Gmail restore

    • restore deleted message in specified interval
    • full restore messages and labels to an empty mailbox (e.g. to other gmail account)

Paid plans are the following: here. Google One or additional storages are not considered as paid plans

Requirements

  • python3 and pip

  • Google Cloud account and own created access files. This software does not contain access files, this is for security reasons.

    A credit card is required during registration, but the use of Workspace APIs is free.

Install

The easiest way for installing:

pip install gwbackupy
# and run...
gwbackupy ...

or

# clone this repository
# install requirements
pip install -r requirements.txt
# and run...
python3 -m gwbackupy ...

The project also has an official Docker image: gwbackupy-docker - under development. The docker image has scheduled backup runs and also supports managing multiple email accounts.

Instructions

Usage

Example usage Gmail

Backup run in CLI:

gwbackupy \
  --service-account-key-filepath <service-acount-json-key-file> \
#  --credentials-filepath <client-secret-json> \    # or with OAUTH
  --batch-size 5 \
  gmail backup \
  --email <mailbox email address>

Restore run in CLI:

gwbackupy \
  --service-account-key-filepath <service-acount-json-key-file> \
#  --credentials-filepath <client-secret-json> \    # or with OAUTH
  --batch-size 5 \
  gmail restore \
  --add-label "backup-restore-1231" \
  --add-label "more-restore-label" \
  --filter-date-from <date or datetime eg. "2023-01-01"> \
  --filter-date-to <date or datetime eg. "2023-02-02 03:00:00"> \
  --restore-deleted \
  --email <source backup mailbox email address> \
  --to-email <destination mailbox email address> # If you want to a different destination account

Backup run from python code:

# WARNING: Calling directly from python code actively change in the current state of development.

from gwbackupy.gmail import Gmail
from gwbackupy.storage.file_storage import FileStorage
from gwbackupy.providers.gmail_service_provider import GmailServiceProvider
from gwbackupy.providers.gapi_gmail_service_wrapper import GapiGmailServiceWrapper

storage = FileStorage('./data/email@example.co')
service_provider = GmailServiceProvider(
    service_account_file_path='serviceacc.json',
    storage=storage,
)
service_wrapper = GapiGmailServiceWrapper()
gmail = Gmail(email='email@example.com',
              service_provider=service_provider,
              service_wrapper=service_wrapper,
              batch_size=3,
              storage=storage)
if gmail.backup():
    print('Yeah!')
else:
    print(':(')

Security

See SECURITY.md

Contributing

Welcome! I am happy that you want to make the project better.

Currently, there is no developed documentation for the process, in the meantime, please use issues and pull requests.

Changelog

The changes are contained in CHANGELOG.md.

About

Márton Somogyi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gwbackupy-0.12.0.tar.gz (32.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gwbackupy-0.12.0-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file gwbackupy-0.12.0.tar.gz.

File metadata

  • Download URL: gwbackupy-0.12.0.tar.gz
  • Upload date:
  • Size: 32.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gwbackupy-0.12.0.tar.gz
Algorithm Hash digest
SHA256 36b7e6ddfd714e8907fc8b78f4d7a247f40413dc2349c0eda15e5e23e9d433a7
MD5 b95d6a290ea9532e7067668a8567cfda
BLAKE2b-256 bc3f62309998d113e105b46ad7e12dc5f3aeac5109a7a1fc15c4c75da1fa3c67

See more details on using hashes here.

File details

Details for the file gwbackupy-0.12.0-py3-none-any.whl.

File metadata

  • Download URL: gwbackupy-0.12.0-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gwbackupy-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4f6334da950c5d1fb657db9f17e4df0cf9e062f6cddb6683788855cedc5e281
MD5 44e370e0e367d2c19f8b12543ca539ee
BLAKE2b-256 8b7ba27d53e61538298c3bf5d3e10db49957d628844b9060feeff16796ec77cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page