Automatisch Backups von ownCloud-Adressbüchern und Kalendern anlegen

| 10 Kommentare

In meinem letzten Artikel hatte ich schon beschrieben, wie man ownCloud-Kalender herunterlädt und anschließend anderen wieder verfügbar macht, um sie z.B. in einen externen Kalender einzupflegen (auf einem Blog) oder ähnliches. In diesem Beitrag soll es darum gehen, wie man Kalender und Adressbücher automatisch herunterlädt.



Hier ein Skript, mit dem der Kalender ausgelesen wird und mit einem Timestamp versehen gespeichert wird:

#!/bin/bash

DATE=`date +"%d-%m-%Y"`
url="MY-OWNCLOUD-CALENDAR-DOWNLOAD-URL"
user=MY-USERNAME
pwd="MY-PASSWORD"

wget \
--quiet --output-document="BACKUP-FOLDER/$DATE-calendar.ics" \
--auth-no-challenge \
--http-user=$user --http-password="$pwd" \
"$url"

Die richtige URL finde ich heraus, indem ich wie im vorherigen Artikel beschrieben verfahre:
Owncloud-Calendar-Download-Link
D.h. wie auf dem Bild zu sehen, mit der rechten Maustaste auf den Pfeil neben dem gewünschten Kalender klicken, den Link speichern und in das Skript einfügen. Außerdem müssen natürlich noch die Daten für den User, das Passwort und den Ordner angepasst werden.
Das Skript z.B. im Ordner /usr/local/bin speichern (z.B. als kalenderbackup.sh). Anschließend muss es noch ausführbar gemacht werden. Hierzu aus dem genannten Ordner heraus ein chmod +x kalenderbackup.sh ausführen.
Nun müsste das Skript schon funktionieren und kann über die Eingabe des Skriptnamen gestartet werden:

kalenderbackup.sh

Wenn dass Skript funktioniert, kann anschließend noch ein Cron-Job angelegt werden. Hierzu
crontab -e aufrufen, über die Eingabe i in den Bearbeiten-Modus wechseln und folgendes eintragen:

#Taegliches Kalender-Backup
0 2 * * * /usr/local/bin/kalenderbackup.sh

Den Bearbeiten-Modus über das Drücken von ESC verlassen und den crontab durch die Eingabe von :wq speichern und schließen. Nun wird jeden Tag um zwei Uhr das Backup-Skript ausgeführt.

Zum Anlegen eines Backups der ownCloud-Adressbücher wird ähnlich verfahren. Das Skript sieht ähnlich aus:

#!/bin/bash

DATE=`date +"%d-%m-%Y"`
url="MY-OWNCLOUD-ADDRESS-BOOK-CARDDAV-URL?export"
user=MY-USERNAME
pwd="MY-PASSWORD"

wget \
--quiet --output-document="BACKUP-FOLDER/$DATE-addressbook.vcf" \
--auth-no-challenge \
--http-user=$user --http-password="$pwd" \
"$url"

Doch im Unterschied zu den Kalendern muss hier bei der anzugebenden URL nicht der Download-Link, sondern der CardDAV-Link angegeben werden und durch ein ?export ergänzt werden. Ähnlich wie oben kann natürlich auch hier ein Cronjob angelegt werden, um das Backup des Adressbuchs zu automatisieren.

Autor: Alexander Kallenbach

Mein Name ist Alexander Kallenbach. Ich schreibe hier auf Scroom über alles mögliche – vor allem aber über IT. Hierbei interessieren mich besonders freie und/oder quelloffene Software sowie deren Entwicklung und Einsatz. Außerdem interessieren mich Auswirkungen von IT auf unser Leben. Hierbei ist die Nutzung von Daten und somit auch Datenschutz ein Themenbereich.

10 Kommentare

  1. Hey danke für dieses ausführliche Tutorial!
    Aber ist es nicht ein bisschen riskant Benutzer und Passwörter klartext abzuspeichern? Läuft die Verbindung über SSL?

    Gibt es sowas auch für ownCloud Aufgaben (/Tasks)?

    • Hallo Jonas,

      Freut mich, dass dir der Artikel gefällt 😉
      Benutzernamen und Passwörter im Klartext zu speichern ist nie optimal. Ich habe daher extra einen OwnCloud-Benutzer angelegt, mit dem ich die Adressbücher und Kalender geteilt habe. Außerdem kannst du die Zugriffrechte auf das Skript so anpassen, dass es nur von einem Nutzer mit root-Rechten lesbar ist:


      sudo chown root:root kalenderbackup.sh
      sudo chmod 700 kalenderbackup.sh

      Ob die Verbindung zu deiner ownCloud verschlüsselt abläuft, hängt ganz davon ab, ob der Webserver HTTPS verwendet (erkennst du in der Adresszeile deines Browsers, wenn du z.B. die Login-Maske oder irgendeine andere Seite der Cloud aufrufst).

      Zu den Tasks kann ich dir leider nichts mit Sicherheit sagen (sind sie nicht Teil der Kalender?.

    • Da man für Passworte eh am besten einen Passwort-Manager verwendet, kann man den dann auch in einem solchen Skript nutzen.
      Ich kann da gopass (https://www.gopass.pw/) empfehlen.

  2. Vielen Dank für das Tutorial.
    Beim Sichern der Adressbucheinträge klappt alles hervorragend. Leider kann ich aber den richtigen Link für den Export des Kalenders nicht finden. Der Trick mit dem Rechtsklick klappt leider nicht mehr.
    Hast Du eine Idee, wie man den passenden Link herausbekommen kann?

    • Ich habe die Lösung nun selbst gefunden:
      Unter Chrome auf die drei Punkte hinter dem Kalendernamen klicken. Dann auf den Pfeil nach unten (ähnlich wie im Tutorial) und einfach die Datei herunterladen. In der Downloadübersicht (unteres Ende des Browsers) auf „ALLE ANZEIGEN“ klicken. Hier wird der passende Pfad angezeigt.
      Bei mir ist er folgendermaßen aufgebaut:

      https://ADRESSE DER NEXTCLOUD/remote.php/dav/calendars/BENUTZERNAME/default?export

      Nochmals vielen Dank für das Tutorial!

  3. Hi, danke für die Bereitstellung. Funktioniert bei mir. Schade, dass es so etwas nicht direkt von owncloud oder als Addon gibt.

    Bei neueren owncloud Versionen wird der Link dynamisch zusammengebaut (Rechtsklick – Links speichern unter… geht da nicht) und lautet

    http://{OWNCLOUDURL}/remote.php/dav/calendars/{NAME}/personal/?export

    Gruß
    Ronny

  4. Hallo,

    ich habe meine Kalender und Adressbücher lange nach dieser Anleitung gesichert (vielen Dank!!). Etwas umständlich war immer, dass ich das Skript jedesmal anpassen musste, wenn ich einen neuen Kalender angelegt habe. Ich habe jetzt ein Script gefunden, das mir die Arbeit abnimmt und sämtliche Kalender sichert, die in Nextcloud vorhanden sind:

    https://github.com/BernieO/calcardbackup

    Funktioniert super. Gut an dem Script ist auch, dass das Passwort nicht auf dem Server gespeichert werden muss.

    Viele Grüße
    Sandra

  5. Hallo,

    auch ich habe meine Kalender/Adressbücher einige Zeit auf diese Weise gesichert. Danke für das Tutorial.

    Auf Dauer fand ich es jedoch umständlich, jedesmal das Skript anzupassen, falls ein neuer Kalender angelegt wurde (wenn ich nicht der Kalenderersteller war, habe ich das oft auch gar nicht mitbekommen). Daher habe ich ein Skript geschrieben, das alle in der Datenbank vorhandenen Kalender und Adressbücher sichert.

    Ein weiterer Vorteil des Skripts: da Kalender/Adressbücher direkt aus der Datenbank extrahiert werden, müssen auch keine Klartext-Passwörter der Nutzer auf dem Server gespeichert werden. Für sicherheitsbewusste Anwender ist das sicher nicht ganz unwichtig.

    Das Skript ist auf Github veröffentlicht und funktioniert mit Nextcloud/ownCloud >= 5.0:
    https://github.com/BernieO/calcardbackup

    Viele Grüße
    Bernie

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.