8

直到现在,我每天都使用LinkGoogle Calender并进行个人备份。wgetpublic ".ics"

现在我想切换到一个只有caldav访问权限的新服务。

有没有可能用一个/下载我caldav的所有数据?carddavwgetcurl

这个下载的数据应该让我有可能备份丢失的数据。

提前致谢。

编辑

我创建了一个非常简单的 php 文件,它以 hmh 解释的方式工作。不知道这种方式是否适用于不同的提供商,但对于mailbox.org,它运作良好。

你可以在这里找到它https://gist.github.com/ahemwe/a2eaae4d56ac85969cf2

4

3 回答 3

17

请更具体地说,您使用的新服务/服务器是什么?

这不是专门的 CalDAV,但大多数 DAV 服务器仍然提供一种使用单个 GET 获取所有事件/待办事项的方法。通常通过使用 GET 来定位相关集合,例如其中之一:

curl -X GET -u login -H "Accept: text/calendar" https://myserver/joe/home/
curl -X GET -u login -H "Accept: text/calendar" https://myserver/joe/home.ics

在 CalDAV/CardDAV 中,您可以使用 PROPFIND 获取集合的全部内容:

curl -X PROPFIND -u login -H "Content-Type: text/xml" -H "Depth: 1" \
  --data "<propfind xmlns='DAV:'><prop><calendar-data xmlns='urn:ietf:params:xml:ns:caldav'/></prop></propfind>" \
  https://myserver/joe/home/

将日历数据替换为

<address-data xmlns="urn:ietf:params:xml:ns:carddav"/>

对于 CardDAV。

这将为您提供一个嵌入了 iCal/vCard 内容的 XML 实体。要恢复它,您需要解析 XML 并提取数据(不难)。

注意:虽然是普通标准,但一些服务器拒绝该内容或只是省略内容(蹩脚!文件错误报告;-)。

于 2014-04-15T20:17:52.567 回答
0

特别是对于使用Baïkal(>= 0.3.3;其他基于 Sabre/dav 的解决方案将类似)的人,您可以直接访问

https://<Baïkal location>/html/dav.php/

在浏览器中并获得一个 html 界面,该界面允许您下载 ics 文件,因此还允许您找到与 curl/wget 一起使用的正确链接。

于 2016-06-06T09:07:48.530 回答
0

我尝试了接受的答案,但对我不起作用。但是,使用我的 CalDAV 日历提供程序,我可以使用以下方法检索所有日历文件

wget -c -r -l 1 -nc --user='[myuser]' --password='[mypassword]' --accept=ics '[url]'

在哪里[myuser][mypassword]是您所期望 的,[url]与您在常规 CalDAV 软件中输入的 URL 相同(由您的提供商指定)。

该命令创建一个目录,其中包含代表日历项的所有 ICS 文件。类似的命令适用于我的地址簿。

于 2019-03-10T17:34:34.457 回答