![]() |
![]()
| ![]() |
![]()
NAMEtask-sync - A discussion and tutorial for the various task(1) data synchronization capabilities. INTRODUCTIONTaskwarrior has several sync options, both external and built in. If you wish to sync your data, choose one method only; mixing methods is going to lead to problems. Each of the methods discussed have their own strengths. ALTERNATIVESThere are three alternatives for syncing data, which are: 1) Version control systems, such as git, hg, svn
OPTION 1: VERSION CONTROL SYSTEMSThere are several good, distributed VCS systems (git, hg, ...) and centralized VCS systems (svn, cvs ...), and they all function in a similar fashion for our purposes. Setup is straightforward. You place your .task directory under revision control. You then need to perform a regular commit/push/pull/update to make sure that the data is propagated when needed. You can even do this using shell scripts so that every task command is preceded by a 'pull' and followed by a 'push'. Strengths:
Weaknesses:
OPTION 2: FILE SHARING SERVICESThere are many file sharing services, such as DropBox, Amazon S3, Google Drive, SkyDrive and more. This technique involves storing your .task directory in a shared directory under the control of the file hosting services. Syncing happens quickly, although it is possible to run into conflict situations when there is no network connectivity, and the tasks are modified in two separate locations. This is because the file hosting service knows only about files, and it has no idea how to merge tasks. Avoid this problem by never modifying the same task on two machines, without an intervening sync. Setup simply involves creating the directory and modifying your data.location configuration variable like this:
Strengths:
Weaknesses:
OPTION 3: TASKSERVERThe Taskserver was designed for this purpose to be secure, fast and conflict- free, allowing data interchange between assorted Taskwarrior clients, and tolerant of network connectivity problems. There is a 'sync' command built in to Taskwarrior (provided the GnuTLS library is installed), and with a server account and client configuration, syncing is done on demand. Setup is a matter of creating an account on a Taskserver (see your Taskserver provider or operate your own - see https://taskwarrior.org/docs/taskserver/setup.html) Once you have an account, you'll receive a certificate, key, and credentials. You'll need to put the certificate and key somewhere like this:
Then you configure Taskwarrior, using the provided details:
If you are using a private server, you are likely also using a self-signed certificate, which means you will need one of the following additional entries:
The CA (Certificate Authority) will be used to verify the server certificate. After setup, you run a one-time sync initialization, like this:
This will make sure your client and the server are properly in sync to begin with. From this point on, you never run the 'initialize' command again, just go about your business, and when you want to sync, run this:
You'll see a summary of how many tasks were uploaded and downloaded. You can safely run the command as often as you like. When there are no changes to sync, nothing happens. If you do not have connectivity, your task changes accumulate so that when you next run 'sync' with proper connectivity, the changes are properly handled, in the right order. If you run multiple clients that sync to the same server, you will need to run this command on your primary client (the one you use most often):
And on the other clients, run:
This protects you against the effects of a sync/duplication bug. Strengths:
Weaknesses:
CREDITS & COPYRIGHTSCopyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez. Taskwarrior is distributed under the MIT license. See https://www.opensource.org/licenses/mit-license.php for more information. SEE ALSOtask(1), taskrc(5), task-color(5), For more information regarding Taskwarrior, see the following:
REPORTING BUGS
|