Willkommen im User-Forum von mailbox.org
 

wie Kalender+Adressbuch+Aufgaben automatisch sichern?

3661001 hat dies geteilt, 1 Jahr her
unbeantwortet

Wie kann man die Kalender-, Aufgaben-, Kontaktedaten automatisch täglich sichern?

Manuell geht es so:

https://support.mailbox.org/topic/wie-sichere-ich-mein-komplettes-adressbuch

Am liebsten möchte ich auf Ubuntu Linux täglich von cron einen wget-Befehl ausführen lassen, der alles als vcf- und icalendar-Datei herunterlädt, so wie hier:

http://wiki.memotoo.com/wiki/Automatically_backup_my_data

Kommentare (14)

Foto
1

Hallo 3661001,

ich habe dieselben Anforderungen aber bisher ebenfalls noch keine Lösung. In diesem Thread gibt es einen Link zu einem Skript als Vorschlag wie es gehen könnte..

Viele Grüße,

9554828

Foto
1

Wozu holt sich jemand einen Mailbox.org-Zugang mir der ganzen Sicherheit, um dann ein Skript auf seinem Rechner laufen zu lassen, in das er die Zugangsdaten im Klartext einträgt?

Wie schräg ist das denn?

Wenn jemand SO wichtige Kontaktdaten hat, dann braucht er ein CRM...

Foto
1

Mir wäre auch lieber gewesen, das Script mit einem einen spezifischen Applikation-Key oder ähnlichen laufen zu lassen. Leider gibt es das scheinbar nicht. So lasse ich das Script wie 9554828 ab und zu lokal laufen (allerdings viel zu selten, wie ich gestehen muss).

Meine Sicherheitseinschätzung ist es, dass wenn jemand meinen Rechner entsperrt und entschlüsselter Festplatte in die Finger bekommt, dann sind meine Kontakte und Kalendereinträge meine kleinste Sorgen. Meine Kontaktdaten sind also eher unwichtig. Was meine Hauptsorge war ist, dass wild gewordener Client Einträge fälschlicherweise löscht oder sonst wie beschädigt (KDE-Organizer *hust*)

Foto
1

Das unterschreibe ich jetzt mal lautstark öffentlich. Wir haben immer wieder Theater damit, daß Clients der Nutzer Daten durcheinanderwürfeln und/oder am Ende auch löschen. Leider ist es an dieser Stelle für uns NICHT einfach so möglich Backupfunktionalitäten wie bei den Maildaten anzubieten.

Foto
Foto
1

Nun so schräg finde ich das nicht.. In der einen oder anderen Form werden die Zugangsdaten ja meistens lokal gespeichert. Und die Sicherheit eines eigenen Rechners hängt entschieden vom Aufwand ab, den man investiert ;-)

Davon abgesehen muss man so ein Skript ja nicht unbedingt automatisch mit cron ausführen lassen ( wobei dann die Zugangsdaten wirklich im Klartext gespeichert sein müssen). Im beschriebenen Fall reicht es wenn das Script per Hand aufgerufen wird und dann kann es auch kurz nach dem Passwort fragen..

Nur ein funktionierendes Script zum Herunterladen aller CalDAV und CardDAV Elemente bräuchte man halt trotzdem!

Foto
1

Gibt es denn jetzt irgendwo eine funktionsfähige Lösung? Ich wäre auch auf der Suche nach einem Cron-fähigen Skript zum Export von Aufgaben, Kalendern und Kontakten.

Herzlichen Dank,

DK

Foto
2

Hallo DK,

ja ich habe eine Lösung, die seit einigen Wochen fehlerfrei funktioniert: vdirsyncer müsste alle von dir genannten Anforderungen erfüllen. (Alle Batch Lösungen mit curl usw habe ich nicht mit mailbox.org/OX zum Laufen bekommen..)

1. ich nutze Debian unstable (siduction), es müsste aber mit jeder Linux Distribution funktionieren.

2. Paket "vdirsyncer" installieren.

3. einmalige Konfiguration von vdirsyncer anhand des Tutorials auf der Dokumentationsseite: https://vdirsyncer.pimutils.org/en/stable/tutorial.html

Ich habe in meinem Benutzerordner einen versteckten Unterordner in dem sich alles rund um vdirsync abspielt. /home/benutzername/.vdirsyncer mit den drei Unterordnern "calendars" (beinhaltet Termine als einzelne *.ics Dateien) , "contacts" (beinhaltet Kontakte als einzelne *.ics Dateien) und "status" (beinhaltet von Metadaten von vdirsyncer) sowie der Konfigurationsdatei "config".

Die config Datei wird anhant der Beispielkonfigurationsdatei erstellt: https://github.com/pimutils/vdirsyncer/blob/master/config.example

Dabei sind mir besonders in Erinnerung geblieben, dass man zwei zwei pairs anlegt. Eins für die Kontakte und eins für die Kalender (inkl. Aufgaben). Man sollte auch die Option conflict_resolution so einstellen, dass alle eventuellen Änderungen des lokalen Datenbestands verworfen werden und immer nur Änderungen vom server übernommen werden. Sollte man mal die lokale Sicherung wieder auf mailbox hochladen wollen, so ist das wohl der Hebel an dem man ansetzen muss. (ACHTUNG: Das habe ich aber noch nicht probiert.. ich weiß: eine Sicherung von der man nicht weiß wie man sie zurückspielt und ob das auch alles reibungslos funktioniert ist eigentlich nichts wert..)

Schließlich habe ich mich in meinem Fall mit Absicht dagegen entschieden das Mailbox.org Passwort in die config Datei zu hinterlegen oder die Passwortverwaltung des Betriebssystems (gnome-keyring) zu nutzen. (siehe https://vdirsyncer.pimutils.org/en/stable/keyring.html ). Nun werde ich bei jeder Sicherung aufgefordert das Mailbox.org Passwort per Hand einzugeben. Das ist aber bei einem gespeicherten Passwort nicht der Fall und die Sicherung kann völlig autonom (mit cron) laufen.

Ich führe nun immer wenn ich bei mailbox.org neue kalender/adressbücher angelegt habe folgende Befehle per hand aus:

  1. vdirsyncer discover
  2. vdirsyncer metasync

Um eine Sicherung anzustoßen wird folgender Befehl ausgeführt:

  1. vdirsyncer sync

Wenn ich nun den gesamten Ordner ~/.vdirsyncer/ sichere, habe ich eine komplette Sicherung der Adressbücher, Kalender und Aufgaben von meinem Mailbox.org Account.

Schließlich noch meine (um Benutzernamen bereinigte) config Datei:

  1. # An example configuration for vdirsyncer.
  2. #
  3. # Move it to ~/.vdirsyncer/config or ~/.config/vdirsyncer/config and edit it.
  4. # Run `vdirsyncer --help` for CLI usage.
  5. #
  6. # Optional parameters are commented out.
  7. # This file doesn't document all available parameters, see
  8. # http://vdirsyncer.pimutils.org/ for the rest of them.
  9. [general]
  10. # A folder where vdirsyncer can store some metadata about each pair.
  11. status_path = "~/.vdirsyncer/status/"
  12. # CARDDAV
  13. [pair benutzername_contacts]
  14. # A `[pair <name>]` block defines two storages `a` and `b` that should be
  15. # synchronized. The definition of these storages follows in `[storage <name>]`
  16. # blocks. This is similar to accounts in OfflineIMAP.
  17. a = "benutzername_contacts_local"
  18. b = "benutzername_contacts_remote"
  19. # Synchronize all collections that can be found.
  20. # You need to run `vdirsyncer discover` if new calendars/addressbooks are added
  21. # on the server.
  22. collections = ["from a", "from b"]
  23. # Synchronize the "display name" property into a local file (~/.contacts/displayname).
  24. metadata = ["displayname"]
  25. # To resolve a conflict the following values are possible:
  26. # `null` - abort when collisions occur (default)
  27. # `"a wins"` - assume a's items to be more up-to-date
  28. # `"b wins"` - assume b's items to be more up-to-date
  29. conflict_resolution = "b wins"
  30. [storage benutzername_contacts_local]
  31. # A storage references actual data on a remote server or on the local disk.
  32. # Similar to repositories in OfflineIMAP.
  33. type = "filesystem"
  34. path = "~/.vdirsyncer/contacts/"
  35. fileext = ".vcf"
  36. [storage benutzername_contacts_remote]
  37. type = "carddav"
  38. url = "https://dav.mailbox.org/caldav/";
  39. username = "benutzername@mailbox.org"
  40. #password = ""
  41. # The password can also be fetched from the system password storage, netrc or a
  42. # custom command. See http://vdirsyncer.pimutils.org/en/stable/keyring.html
  43. password.fetch = ["prompt", "Passwort für benutzername@mailbox.org auf Mailbox.org"]
  44. # CALDAV
  45. [pair benutzername_calendar]
  46. a = "benutzername_calendar_local"
  47. b = "benutzername_calendar_remote"
  48. collections = ["from a", "from b"]
  49. # Calendars also have a color property
  50. metadata = ["displayname", "color"]
  51. conflict_resolution = "b wins"
  52. [storage benutzername_calendar_local]
  53. type = "filesystem"
  54. path = "~/.vdirsyncer/calendars/"
  55. fileext = ".ics"
  56. [storage benutzername_calendar_remote]
  57. type = "caldav"
  58. url = "https://dav.mailbox.org/caldav/";
  59. username = "benutzername@mailbox.org"
  60. #password = ""
  61. password.fetch = ["prompt", "Passwort für benutzername@mailbox.org auf Mailbox.org"]

Foto
1

Hallo 9554828,

danke für den Tipp mit vdirsync! Auf einem Raspberry Pi läuft die Sache seit einigen Tagen stabil. In der Kombination mit rsnapshot ist es genau die gesuchte Lösung!

Herzlichen Dank und viele Grüße,

DK

Hier noch schnell meine Installationsnotizen. Diese sind, bis auf eine Bereinigung der Konfigurationsdatei, identisch zur Ursprungsanleitung. Danke!

Und: ja, ich lege des Passwort auf dem Raspberry ab. Sollte der Pi abhanden kommen, dann habe ich ein ganz anderes Problem, als das meine Kalendereinträge jemandem in die Hände gefallen sind...

  1. ####
  2. # vdirsync auf einem Raspberry Pi installieren
  3. #
  4. #
  5. sudo apt-get install libxml2 libxslt1.1 zlib1g python
  6. sudo apt-get install python3.3
  7. pip3 install --user --ignore-installed vdirsyncer
  8. mkdir -p ~/.vdirsyncer/status
  9. mkdir -p ~/.vdirsyncer/contacts
  10. mkdir -p ~/.vdirsyncer/calendars
  11. Konfigurationsdatei .vdirsyncer/config einrichten (siehe unten)
  12. Kommandos für die Synchronisation:
  13. vdirsyncer discover
  14. vdirsyncer metasync
  15. vdirsyncer sync
  16. #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
  17. #
  18. [general]
  19. status_path = "~/.vdirsyncer/status/"
  20. # CARDDAV
  21. [pair USERNAME_contacts]
  22. a = "USERNAME_contacts_local"
  23. b = "USERNAME_contacts_remote"
  24. collections = ["from a", "from b"]
  25. metadata = ["displayname"]
  26. conflict_resolution = "b wins"
  27. [storage USERNAME_contacts_local]
  28. type = "filesystem"
  29. path = "~/.vdirsyncer/contacts/"
  30. fileext = ".vcf"
  31. [storage USERNAME_contacts_remote]
  32. type = "carddav"
  33. url = "https://dav.mailbox.org/caldav/";;
  34. username = "USERNAME@mailbox.org"
  35. password = "PASSWORD"
  36. # CALDAV
  37. [pair USERNAME_calendar]
  38. a = "USERNAME_calendar_local"
  39. b = "USERNAME_calendar_remote"
  40. collections = ["from a", "from b"]
  41. metadata = ["displayname", "color"]
  42. conflict_resolution = "b wins"
  43. [storage USERNAME_calendar_local]
  44. type = "filesystem"
  45. path = "~/.vdirsyncer/calendars/"
  46. fileext = ".ics"
  47. [storage USERNAME_calendar_remote]
  48. type = "caldav"
  49. url = "https://dav.mailbox.org/caldav/";;
  50. username = "USERNAME@mailbox.org"
  51. password = "PASSWORD"
  52. #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

Foto
1

Ich hab leider beim sync Befehl folgende Fehlermeldung für jeden Eintrag mit -vdebug:

  1. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/cli/utils.py", line 74, in handle_cli_error
  2. debug: raise e
  3. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/sync/__init__.py", line 153, in sync
  4. debug: partial_sync
  5. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/sync/__init__.py", line 177, in run
  6. debug: self._run_impl(a, b)
  7. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/sync/__init__.py", line 204, in _run_impl
  8. debug: href, etag = self.dest.storage.upload(self.item)
  9. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/storage/base.py", line 15, in inner
  10. debug: return f(self, *args, **kwargs)
  11. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/storage/filesystem.py", line 126, in upload
  12. debug: fpath, etag = self._upload_impl(item, href)
  13. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/vdirsyncer/storage/filesystem.py", line 149, in _upload_impl
  14. debug: return fpath, get_etag_from_file(f)
  15. debug: File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 88, in __exit__
  16. debug: next(self.gen)
  17. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/atomicwrites/__init__.py", line 152, in _open
  18. debug: self.commit(f)
  19. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/atomicwrites/__init__.py", line 179, in commit
  20. debug: move_atomic(f.name, self._path)
  21. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/atomicwrites/__init__.py", line 101, in move_atomic
  22. debug: return _move_atomic(src, dst)
  23. debug: File "/usr/local/Cellar/vdirsyncer/0.16.3/libexec/lib/python3.6/site-packages/atomicwrites/__init__.py", line 49, in _move_atomic
  24. debug: os.link(src, dst)
  25. Copying (uploading) item AA9893DD-7273-4207-B35F-A6F1109E5759 to kusername_calendar_local/XX
  26. error: Unknown error occured for username_calendar/XX: [Errno 45] Operation not supported: '/Users/username/DiskStation/Backup/Kalender/XX/tmp_9ro2nif' -> '/Users/username/DiskStation/Backup/Kalender/XX/AA9893DD-7273-4207-B35F-A6F1109E5759.ics'
  27. error: Use `-vdebug` to see the full traceback.


Meine Config sieht so aus:

  1. [general]
  2. status_path = "~/.vdirsyncer/status/"


  3. # CARDDAV

  4. [pair username_contacts]
  5. a = "username_contacts_local"
  6. b = "username_contacts_remote"
  7. collections = ["from a", "from b"]
  8. metadata = ["displayname"]
  9. conflict_resolution = "b wins"

  10. [storage username_contacts_local]
  11. type = "filesystem"
  12. path = "~/DiskStation/Backup/Kontakte/"
  13. fileext = ".vcf"

  14. [storage username_contacts_remote]
  15. type = "carddav"
  16. read_only = "true"
  17. url = "https://dav.mailbox.org/caldav/";
  18. username = "username@mailbox.org"
  19. password.fetch = ["command", "keyring", "get", "Mailbox.org", "username@mailbox.org"]


  20. # CALDAV

  21. [pair username_calendar]
  22. a = "username_calendar_local"
  23. b = "username_calendar_remote"
  24. collections = ["from a", "from b"]
  25. metadata = ["displayname", "color"]
  26. conflict_resolution = "b wins"

  27. [storage username_calendar_local]
  28. type = "filesystem"
  29. path = "~/DiskStation/Backup/Kalender/"
  30. fileext = ".ics"

  31. [storage username_calendar_remote]
  32. type = "caldav"
  33. read_only = "true"
  34. url = "https://dav.mailbox.org/caldav/";
  35. username = "username@mailbox.org"
  36. password.fetch = ["command", "keyring", "get", "Mailbox.org", "username@mailbox.org"]


Könnte das etwas mit eventuell veränderten Einstellungen bei Mailbox in den letzten Monaten zu tun haben oder mach ich irgendetwas falsch?

Foto
Foto
1

Ich würde nach wie vor der Einfachheit halber Thunderbird installieren... selbst wenn man es nicht aktiv nutzen will, damit macht man dann halt einfach die Sicherung.

Außerdem gibt es für jeden, der ein Smartphone benutzt, IMMER die Möglichkeit, die Kalender- und Kontaktdaten aus den Smartphone-Apps heraus zu EXPORTIEREN. Für Otto Normuser/in sollte das locker reichen.

Foto
1

Hallo 7586310,

danke für den Tipp. Ich nutze Thunderbird, insofern sind die Einträge dort bereits hinterlegt. ABER: ich möchte, auch zu Archivzwecken und als Reservesicherung, gerne eine Skript-basierte Sicherung mittels Cron durchführen. Ich nutze Kalender/Aufgaben sehr intensiv und mein Horrorszenario ist ein Amok-laufender Thunderbird (oder aCalender oder ...). Okay?

Viele Grüße,

DK

Foto
1

Dann kannst du den Thunderbird-Profilordner z.B. mit Duplicati regelmäßig in kurzen Abständen sichern. Wenn man differenziell sichert, geht das schnell mit wenig Datenvolumen pro Sicherung.

Foto
1

Hallo 7586310,

wenn ich es richtig gesehen habe, dann speichert TB die Daten in einer sqlite-Datenbank. Das ist zwar schön und gut, im Sinne einer einfacheren Verarbeitung wäre mein Wunschformat aber iCal o.ä.

Viele Grüße,

DK

Foto
1

Was noch gehen müsste: ich glaube, man kann die Synchronisation für Termine und Kontakte in Thunderbird (in den Apps auf jeden Fall) auf read-only zu stellen - dann können bestimmte Dinge nicht mehr schiefgehen.

Das hat dann aber auch zur Folge, dass man neue Einträge nur noch direkt bei mailbox anlegen kann, also macht man das vielleicht nur für die Kontakte einen Sinn.