ZSyncer Overview

  ZSyncer allows you to synchronize and compare objects from one zope
  (source) to another (destination).  It is a lot more convenient than
  the old manual export / transfer / import procedure.

  ZSyncer supports SSL as well as insecure HTTP.
  It uses your choice of XML-RPC or Zope's ZPublisher.Client.
  (Note that XML-RPC may go away in a future release
   once the ZPublisher.Client code is more widely tested.)

Installation

  Place the ZSyncer directory in your zope Products directory as usual
  with product installation. You need to do this for all Zope servers
  that you wish to use as sources or destinations.

  Be sure that you can make HTTP connections from the source server to
  the destination server (and the Zope port). ZSyncer cannot work
  without this. Command-line http clients such as lynx or wget may be
  helpful for testing the connection.

  It is highly advisable to be sure that the system clock on all source
  and destination servers are synchronized or at least very close. 
  On Unix, NTP may be a very good idea.

Upgrading from Earlier Versions

  ZSyncer is still unstable in the sense that it may change
  drastically between releases.  

  0.6.0 is not backwards-compatible with earlier versions. You should
  upgrade ZSyncer on all of your zope servers simultaneously.  

  You will also have to check your ZSyncer configuration and may need
  to re-enter some values such as the list of destination servers.
  Also check permissions, as we changed the permission name 
  for 0.6.0-beta2. (It used to be "Use ZSyncer", it is now
  "ZSyncer: Use ZSyncer" following the emerging convention.)

  ZSyncer 0.7.0 is also planned to include many backward-incompatible
  changes.


Usage

  ZSyncer is pretty self-explanatory. If you disagree, email the current
  maintainer and tell him why :-)
  Also try the "Help" button in the Zope management interface.

  ZSyncer uses a "push" model. You can push data from one server
  to another. You cannot "pull" data in the other direction.
  Patches to support pull are welcome.

  We refer to the server that is doing the push as the "source"
  server. The server(s) that it pushes to are the "destination"
  servers.

  As of 0.6.0, it is now possible to configure your syncers to use
  relative paths.  This means that a syncer at host1:8080/folder1/syncer1
  can sync to host2:8080/folder2/syncer2, and objects from folder1 on
  host1 will be synced to folder2 on host2.  This is a new feature,
  please let me know if there are any problems.
  Note that the flag must currently be set on both source and destination
  servers in order to work correctly.


Configuring Security

  Note that ZSyncer uses basic HTTP authentication.
  If you are concerned about the user's password being intercepted,
  you should ensure that one of the following is true:

  * the connection between source and destination is on a trusted
    private network or tunnel

  * your destination servers are accessible via HTTPS and you 
    configure ZSyncer on the source server to use only 
    the https:// URLs of the destination servers.

  For a given user to use ZSyncer, there are several things you must ensure:

  * the user has the same ID and password on both servers, OR
 
  * you must enter the id of such a user in the "Override user" option.

  * On the source server: 

    The user must have at least the following permissions in the 
    context of the syncer object:

    * Use ZSyncer

    * View Management Screens

    ... and the following permissions in the context of the objects 
    to sync or compare:


    * Import/Export Objects

    * Use ZSyncer

    * View Management Screens


  * On the destination server: 

    The effective user (the one set in "Override user",
    if there is one; otherwise, the user who is using zsyncer on the
    source server) must have the same permissions as described above
    for the source server.

    In addition, the effective user must have the "Delete Objects"
    permission in the context of the objects you want to sync.


Known Issues

  XML-RPC is currently broken, use ZPublisher.Client instead.
  Note that we may just remove XML-RPC instead of fixing it,
  it offers no advantages that I can think of. Yell if this
  bothers you.

  See the "Bugs" section of the TODO.txt.

  The "status" display can be wrong. We rely on
  bobobase_modification_time for objects that don't provide DublinCore
  timestamps. This is not good. Among other things, it means that you
  frequently get "out of date" for no good reason.  Be suspicious of the
  status. Again, we recommend that you keep the clocks on your
  servers in sync. This will reduce the likelihood of false status
  reports.

