vdirsyncer
Vdirsyncer is a command-line tool for synchronizing calendars and addressbooks between a variety of servers and the local filesystem. The most popular usecase is to synchronize a server with a local folder and use a set of other programs to change the local events and contacts. Vdirsyncer can then synchronize those changes back to the server.
config
# An example configuration for vdirsyncer.
#
# Move it to ~/.vdirsyncer/config or ~/.config/vdirsyncer/config and edit it.
# Run `vdirsyncer --help` for CLI usage.
#
# Optional parameters are commented out.
# This file doesn't document all available parameters, see
# http://vdirsyncer.pimutils.org/ for the rest of them.
[general]
# A folder where vdirsyncer can store some metadata about each pair.
status_path = "~/.local/share/vdirsyncer/status/"
# CARDDAV
[pair alexarians_contacts]
# A `[pair <name>]` block defines two storages `a` and `b` that should be
# synchronized. The definition of these storages follows in `[storage <name>]`
# blocks. This is similar to accounts in OfflineIMAP.
a = "alexarians_contacts_local"
b = "alexarians_contacts_remote"
# Synchronize all collections that can be found.
# You need to run `vdirsyncer discover` if new calendars/addressbooks are added
# on the server.
collections = ["from a", "from b"]
# Synchronize the "display name" property into a local file (~/.contacts/displayname).
metadata = ["displayname", "description"]
# To resolve a conflict the following values are possible:
# `null` - abort when collisions occur (default)
# `"a wins"` - assume a's items to be more up-to-date
# `"b wins"` - assume b's items to be more up-to-date
#conflict_resolution = null
[storage alexarians_contacts_local]
# A storage references actual data on a remote server or on the local disk.
# Similar to repositories in OfflineIMAP.
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"
[storage alexarians_contacts_remote]
type = "google_contacts"
token_file = "~/.local/share/vdirsyncer/google_contacts_token"
client_id = "<Client ID from Google developer console>"
client_secret = "<Client secret from Google developer console>"
#username =
# The password can also be fetched from the system password storage, netrc or a
# custom command. See http://vdirsyncer.pimutils.org/en/stable/keyring.html
#password =
# CALDAV
[pair alexarians_calendar]
a = "alexarians_calendar_local"
b = "alexarians_calendar_remote"
collections = ["from a", "from b"]
# Calendars also have a color property
metadata = ["displayname", "color"]
[storage alexarians_calendar_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"
[storage alexarians_calendar_remote]
type = "google_calendar"
token_file = "~/.local/share/vdirsyncer/google_calendar_token"
client_id = "<Client ID from Google developer console>"
client_secret = "<Client secret from Google developer console>"
#url = "https://owncloud.example.com/remote.php/caldav/"
#username =
#password =
Code Snippet 1:
vdirsyncer configuration