Update ging schief

Manche Provider erlauben auch bei shared-hosting Paketen die Ausführung von Skripten mit der PHP_Funktion exec über bestimmte PHP-Funktionen. Dann könnte es eventuell funktionieren, den Kalender mit dem Skript calcardbackup aus der bestehenden Datenbank zu extrahieren. Ob das bei jedem Provider klappt, weiß ich nicht, da die Umgebungen jeweils verschieden eingerichtet sind. Ich habe das allerdings gerade bei meinem Account bei all-inkl (privat) versucht und da hat es geklappt. Wichtig ist, dass du die no-fd-Branch von calcardbackup benutzt (sie kommt ohne file-descriptors aus, die zumindest bei meinem Hoster nicht funktionieren: GitHub - BernieO/calcardbackup at no-fd)
(das Repo auf GitHub ist veraltet. Bitte nur noch calcardbackup von codeberg benutzen)

Die folgende Vorgehensweise ist veraltet. Siehe das Edit vom 27.05.2021 am Ende dieses Beitrags.

Falls du das versuchen möchtest:
1. calcardbackup_no-fd in deinen Webspace hochladen (am Besten in das Verzeichnis cgi-bin, falls es existiert).
2. eine phpx-Datei mit folgendem Inhalt erstellen und irgendwo auf deinem Webserver ablegen (bei dem exec-Kommando den Pfad zu calcardbackup und zum Nextcloud-Installationsverzeichnis relativ zur phpx-Datei anpassen!). Wichtig ist, dass der Dateiname der phpx-Datei die Endung .phpx hat:

<?php
exec("/usr/bin/env bash ../cgi-bin/calcardbackup pfad/zu/Nextcloud/ -na 2>&1", $out, $result);
echo "Returncode: " .$result ."<br>";
echo "Ausgabe des Scripts: " ."<br>";
echo "<pre>"; print_r($out);
?>

3. Die gerade erstellte phpx-Datei mithilfe eines Browsers ansurfen

Mit der Option -na werden nur die Kalender gesichert. Falls du auch Adressbücher sichern möchtest, einfach die Option ändern in -nc und das phpx-Skript noch einmal aufrufen.

EDIT 27.05.2021: diese Vorgehensweise ist unnötig kompliziert und veraltet, denn im calcardbackup-Repo bei codeberg ist mittlerweile das Skript calcardbackup_wrapper.php enthalten, das den ganzen Prozess vereinfacht. Im Abschnitt Kann ich das auch ohne Shell Zugang zu meinem Server benutzen? des README wird die Vorgehensweise genau beschrieben.