[SyncEvolution] Syncing two servers
Patrick Ohly
patrick.ohly at intel.com
Tue Dec 17 07:41:19 UTC 2013
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 and
> 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 sync
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
SyncEvolution.
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.
datapath=$HOME/some-directory
mkdir -p $datapath
# Configure default "calendar" (named by convention).
syncevolution --configure \
backend=file \
databaseFormat=text/calendar
# 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 1.3.99.6 and either GNOME Online
Accounts >= 3.8 or Ubuntu Online Accounts with the Ubuntu patches (not
in 1.3.99.6 yet) - see the 1.3.99.6 and 1.3.99.5 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.
> For example,
>
> * Can I sync both remote sources to a single local database?
Yes.
> * Does syncevolution only sync through polling, or can it be configured to
> 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:
https://bugs.freedesktop.org/show_bug.cgi?id=52689
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.
More information about the SyncEvolution
mailing list