Rebooting.

Synchron

Das Problem: Ich verwende derzeit drei Rechner parallel: Meinen PC zu Hause, das Notebook der Firma und neuerdings noch das iBook. Und es gibt Daten, die würde ich gerne zwischen diesen drei Rechnern synchronisieren, da weder die Beschränkung auf einen Rechner noch das manuelle Abtippen eine wirkliche Lösung darstellt. Zu diesen Daten gehören hauptsächlich Adressen, Mails, Kalender und RSS-Feeds, letztere wenn möglich mit Gelesen-Status. (Theoretisch könnte man das mit Lotus Notes und seiner Replizierung perfekt lösen. Das hatte ich hier auch schon dazu verwendet, aber erstens stirbt mein Domino-Server hier gerade den Hardware-Tod und zweitens wäre es ja langweilig, den einfachen Weg zu gehen.)

Heute bin ich über die zumindest vorläufige Lösung für den Kalender gestolpert: Mozilla Sunbird.


Das ist ein weiteres Projekt aus der Mozilla-Gemeinde und beinhaltet im Wesentlichen einen Kalender, genau genommen entsteht es gerade aus einer entsprechenden Firefox/Thunderbird-Extension. Aktuell steht das Tool noch auf Version 0.2, scheint aber schon recht stabil zu sein, wenn auch sicherlich noch nicht komplett.

Sunbird unterstützt das iCalender-Format, das inzwischen von vielen Anwendungen verwendet wird. Innerhalb Sunbirds kann man dann mehrere dieser Kalender in Form von mehreren ics-Dateien parallel pflegen, etwa einen für geschäftliche und einen für private Termine. Hervorzuheben ist aber vor allem ein interessantes Feature: Man kann die Kalender per WebDAV auf einen Server hochladen und den lokalen Bestand mit diesem abgleichen.

Einen WebDAV-Server muss man natürlich zur Verfügung haben. Jeder GMX-Kunde kann aber auf das sog. „Mediacenter“ mit 1GB Platz per WebDAV zugreifen. Da sollten ein paar Kalenderdaten draufpassen 😉

Die ursprüngliche Idee stammt aus einem Eintrag bei macosxhints.com. Dort geht es primär darum, die Apple-eigene Kalender-Anwendung iCal auf mehreren Macs zu synchronisieren, ohne auf den Bezahldienst .Mac angewiesen zu sein. Sunbird wird hier einfach nur für den Abgleich der lokalen ics-Dateien mit dem WebDAV-Server verwendet. Prinzipiell kann man das aber auch über ein wget/curl-Skript machen, dass die Datei vom Server zieht und die lokale damit überschreibt. Man muss nur daran denken, dieses Skript vor jedem iCal-Aufruf zu starten.

Da aber Sunbird neben MacOS X auch für Windows und Linux zur Verfügung steht, lässt er sich prima verwenden, um einen Kalender auf mehreren Rechnern mit unterschiedlichen Betriebssystemen abzugleichen.

Man fängt auf einem der Rechner an, auf welchem ist im Prinzip egal. Hat man irgendwo schon einen Kalender geführt und möchte diesen übernehmen, macht es sicherlich Sinn, dort zu beginnen. Der macosxhints-Artikel bezieht sich hierbei natürlich auf iCal, bei mir wäre das der Notes-Kalender. Also:

  1. Sunbird starten. Es existiert bereits ein Default-Kalender „My Calendar“, den man momentan noch so belassen sollte. Den kann man am Schluß dann löschen.
  2. Ersten Kalender, z.B. „Private“ anlegen und speichern. Man muss aber aufpassen bei der Auswahl der „File Location“. Dummerweise wird hier default das Programm-Verzeichnis von Sunbird verwendet anstatt des Profil-Ordners. Man sollte also über den Browse-Button in das Verzeichnis C:\Dokumente und Einstellungen\$profilname\Anwendungsdaten\Mozilla\Sunbird\Profiles\$bezeichnung.default\Calendar wechseln und dort eine Datei Private.ics anlegen. Man darf (offenbar aufgrund eines Sunbird-Bugs jetzt noch keine „Remote Server URL“ angeben oder das entsprechende Häkchen setzen, sonst läuft man auf einen Fehler).
  3. In diesem Kalender legt man einen Dummy-Eintrag an und merkt sich diesen, damit man ihn später wieder löschen kann. Man bekommt sonst einen Fehler, wenn man einen 0 Byte großen Kalender hochladen will.
  4. Dann das Profil für den Kalender wieder öffnen und die „Remote Server URL“ angeben. Das ist der WebDAV-Server mit dem Dateipfad, bei GMX z.B. https://mediacenter.gmx.net/Private.ics. Man kann auch einen Verzeichnisnamen anhängen, wenn man will. Das Häkchen neben „Automatically publish“ kann man ebenfalls setzen. Dann wird später der Kalender nach jeder Änderung hochgeladen. (Ich habe allerdings noch nicht getestet, was passiert, wenn der Client dann gerade keine Internetverbindung hat.Wenn der Client gerade keine Internetverbindung hat, gibt es Probleme, da Sunbird versucht, den Server zu erreichen. Wenn man den Haken allerdings weglässt, muss man ziemlich darauf aufpassen, wann man wie den Server-Abgleich macht. Mehr dazu evtl. später.)
  5. Danach startet man über das Kontextmenü des Kalenders die Aktion „Publish Entire Calendar“. Dadurch wird die ics-Datei auf dem konfigurierten Server angelegt.
  6. Man kann sich über eine Windows-Netzwerkressource davon überzeugen, dass in dem WebDAV-Verzeichnis auch wirklich eine entsprechende ics-Datei angelegt wurde.
  7. Danach löscht man den Kalender wieder in Sunbird. (An dieser Stelle scheint Sunbird noch ein wenig buggy zu sein und diese Vorgehensweise hat sich bis jetzt als beste erwiesen.)
  8. Dann ruft man im File-Menu die Aktion „Subscribe to Remote Calendar“ aus, vergibt wieder den gleichen Namen wie vorhin und setzt die gleiche Remote Server URL. Auch hier kann man das Häkchen bei „Automatically publish“ setzen.
  9. Im Sunbird-Profil hat man jetzt ein CalendarDataFilex.ics. Das kann man wiederum umbenennen in Private.ics, muss das dann aber in der CalendarManager.rdf im gleichen Verzeichnis manuell ändern.

Die Schritte 2 bis 9 wiederholt man für jeden Kalender, den man anlegen möchte. Auf den anderen Rechnern kann man die Kalender dann mit der Subscribe-Aktion einfach runterladen und ebenfalls ggfs. die Dateinamen ändern. Will man auf MacOS X den iCal mit dem gleichen Kalender verwenden, sollte man sich an dem erwähnten Artikel bei macosxhints orientieren, da man die lokalen ics-Files dort eben ins iCal-Verzeichnis legen muss.

Die Daten aus meinen zwei Notes-Kalendern habe ich mit einem Tool aus der Lotus Sandbox in ics exportiert. Dauert eine Weile. Und es empfiehlt sich anscheinend, nicht direkt das resultierende ics-File weiterzuverwenden, sondern dieses mit Sunbird in einen vorher erstellten, leeren Kalender zu importieren.

Laut Tobias scheint die Synchronisierung auch mit der Mozilla Calendar-Extension zu funktionieren.

Diese Konstellation ist zwar nicht so stabil wie z.B. eine Notes-Replizierung, sollte aber für die meisten Fälle ausreichen. Man sollte nur vielleicht nicht gerade an zwei Rechnern parallel im Kalender arbeiten. Vor allem nicht bei Beteiligung von iCal, da dieses nicht die ics-Datei auf dem Server intern ändern kann, sondern komplett mit der lokalen über die Funktion „Veröffentlichen“ überschreibt.

Fehlt also nur noch ein Tool, das aus der ics-Datei auf dem Server einen Browseroberfläche baut und auch in die Datei zurückschreiben kann.

2 Comments to “Synchron” RSS feed for these comments

  1. Na das klingt ja sehr einfach 🙁
    Ich glaube, da warte ich besser auf Sunderbird 0.3.
    Kannst du eigentlich aus dem Kalender heraus Einladungen verschicken (wie in Notes), die beim Empfänger automatisch im Kalender erschienen?

  2. Das ist in der Tat noch keine perfekte Lösung, der Trick ist hier aber vor allem das Löschen und wieder Abonnieren des angelegten Kalenders.

    Aber auch iCal scheint so seine Schwierigkeiten mit der Veröffentlichungsfunktion zu haben. Zumindest scheitert es hier am größten Kalender an einem 30sec-Timeout. Und das, obwohl das entsprechende ics-File gerade mal 135KB groß ist.

    Einladungen sind in Sunbird zumindest momentan nicht enthalten. Halte ich hier auch für erstmal vernachlässigbar. Das soll ja keine Groupware werden, sondern ein persönlicher Kalender.

Leave a Reply to Wolfgang Schmidetzki