On Tue, 2013-12-17 at 00:58 +0000, Todd Wilson wrote:
Hi, I've been looking at the syncevolution documentation online
in an effort
to determine whether it can be used to keep two remote servers (say, CalDAV
and CalDAV, or CalDAV and ActiveSync) in sync, and I haven't been able find
an answer. Can anyone help me with this?
Sure. This list is a good start.
More specifically, I have calendars on two different servers (Zimbra
Google), both of which are accessible via CalDAV, and one of which (Zimbra)
is accessible via ActiveSync. I would like to find a way to keep both of my
calendars in sync, with minimal delay, and I'm wondering whether
syncevolution might be part of the solution.
SyncEvolution can do this, but it is not one of the common use cases, so
you are chartering new territory. Beware, there might be dragons.
What you need is the so called "local sync" - "local" because the
logic and data transfer back and forth between both sides gets done on
the machine on which SyncEvolution runs, by SyncEvolution.
You can set it up in two ways:
1. Sync between the two servers directly. A single sync run will
get them in sync.
2. Sync both servers against the same local database. You need to
run syncs multiple times, alternating between the two servers,
until no changes are transferred any more.
I suggest you follow the second approach. Syncing may have to read and
write data on one side of the sync (the one which is treated internally
as the SyncML server side) more often, so having that on local storage
will be faster.
Start with the file backend for local storage. That will write one file
per VEVENT, just as in the engine internally. EDS and Akonadi store it
differently (one item per UID), which makes access more complicated in
I assume that you are not already using SyncEvolution for something
else. In that case you can use the "@default" context for your local
databases and sync configs.
# Choose directory for data files.
mkdir -p $datapath
# Configure default "calendar" (named by convention).
syncevolution --configure \
# Configure Zimbra, following the "CalDAV and CardDAV" section
# in the README (aka "man syncevolution").
# Configure Google Calendar, using a similar approach but with *oAuth2*.
For oAuth2 you will need SyncEvolution 184.108.40.206 and either GNOME Online
Accounts >= 3.8 or Ubuntu Online Accounts with the Ubuntu patches (not
in 220.127.116.11 yet) - see the 18.104.22.168 and 22.214.171.124 release announcement.
It would be nice to document the specific steps for both GOA and UOA in
a HOWTO in the SyncEvolution Wiki. This is very new and I haven't had
the time to write up something.
* Can I sync both remote sources to a single local database?
* Does syncevolution only sync through polling, or can it be
receive push information from servers?
It can only sync through polling. There's a feature request open for it,
but no current plans to work on it:
For CalDAV there's no standardized push mechanism. Apple uses something
based on XMMP. I'm not sure about Google. The CalConnect group just
announced an expert group which will standardize push.
For ActiveSync there is something, based on keeping a TCP connection to
the server open and having one pending command which the server replies
to when there was a change. However, neither SyncEvolution nor
activesyncd support that because there was no time to implement it.
Best Regards, Patrick Ohly
The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.