Sign inSign up

rtomac/gcardvault

By rtomac

•Updated 2 months ago
Archived

Command-line utility which exports all of a user's Google Contacts in vCard/VCF format for backup

Image
1

2.4K

rtomac/gcardvault repository overview

⚠️ This project is no longer maintained. For automated backup of Google contacts, I would recommend vdirsyncer⁠. For one-time backups, Google Takeout⁠ works fine.

⁠Overview

Gcardvault is a command-line utility which exports all of a user's Google Contacts in vCard/VCF format for backup (or portability).

Features:

  • Automatically discovers all of a user's contacts
  • Downloads them in vCard/VCF format and saves them to disk for archival
  • Optionally manages version history for each contact in an on-disk "vault" (a git repo under the covers)
  • Can be run via Docker image (multi-arch) or installed directly as a Python package with command-line interface

⁠How it works

⁠Usage

Some example commands...

Sync all contacts for [email protected] user:

gcardvault sync [email protected]

Simply export contacts, do not save version history:

gcardvault sync [email protected] --export-only

See the CLI help⁠ for full usage and other notes.

⁠Installation

⁠Via Docker

docker run -it --rm \
    -v ${HOME}/.gcardvault:/root/.gcardvault \
    -v ${PWD}:/root/gcardvault \
    rtomac/gcardvault sync [email protected]

⁠Via PyPi

pip install gcardvault
gcardvault sync [email protected]

⁠OAuth2 authentication

The CLI initiates an OAuth2 authentication the first time it is run (interactive), and then uses refresh tokens for subsequent runs (headless).

When you use Gcardvault in its default configuration, you are authenticating with Google using Gcardvault's client ID. There is nothing inherently insecure about this, since the application is running locally and therefore only you will have access to the data it reads from Google.

That said, it's strongly recommended to create your own client ID through the Google API Console⁠, since the shared client ID will be used by others and subject to limits which may cause unpredictable failures.

rclone⁠ has a good write-up on making your own client ID⁠.

You can provide your client ID and secret to gcardvault as follows:

gcardvault sync [email protected] --client-id my_client_id --client-secret my_client_secret

⁠Development

Source repository:
http://github.com/rtomac/gcardvault⁠

⁠Install dependencies locally (for IDE)

make devenv
. ./.devenv/bin/activate

⁠Build distribution and Docker image

make build

⁠Build and test locally

make test

⁠Build and run locally

make run [email protected]

⁠Release to PyPi and Docker Hub

make release

See targets and variables in Makefile⁠ for more options.

⁠License

MIT License

Tag summary

Content type

Image

Digest

sha256:5ed9ac165…

Size

78.7 MB

Last updated

2 months ago

docker pull rtomac/gcardvault