Syncing Tasks
Taskwarrior supports “syncing” tasks between multiple “replicas”. For example, you might sync tasks between a laptop and a desktop machine.
Sync Overview
Changes to tasks are synchronized to a server using the task sync
command.
This command sends any new local changes to the server, and applies any changes on the server that it has not seen before.
It takes two task sync
calls for a change to get from one replica to another: one on the source, to send the change; and one on the destination, to receive the change.
For example, on the laptop:
$ task add +homework finish odd exercises in section 3.2
$ task sync
and later on the desktop:
$ task sync
$ task +homework list
ID Age Tags Description Urg
3 2h homework finish odd exercises in section 3.2 0.8
NOTE: The sync mechanics are implemented by TaskChampion. Thus any tool that uses TaskChampion can synchronize with Taskwarrior.
Do Not Use External Sync Tools
Past versions of Taskwarrior used a simpler format for storing task data, and with some care it was possible to use file-synchronization tools like Syncthing or rsync
to synchronize tasks.
As of Taskwarrior 3.0, tasks are stored in a local database in a format that is not amenable to this sort of synchronization.
While they may work most of the time, such configurations can cause corruption and are not supported.
How To Sync
To set up sync, you will need a server. Two options are available:
- One of the commercial cloud-storage providers; or
- A TaskChampion sync server running on an Internet-accessible system of your own or provided by someone else.
Taskwarrior can use a cloud-storage provider, such as AWS S3 or Google Cloud Storage, to synchronize tasks. This carries a small cost, and also requires some expertise in the cloud provider configuration to set up. Some S3-compatible storage services are also supported.
The TaskChampion sync server is easy to run on a server such as a VPS or web hosting provider. It can be deployed in a variety of ways and can be configured simply for a single-user or extended to support multiple users. The sync server documentation describes the server configuration options in detail.
Refer to the task-sync(5)
manpage for details on configuring synchronization.