如何使用一个wget / curl下载所有我的caldav和carddav数据?

时间:2014-04-12 12:51:56

标签: backup wget caldav carddav

到目前为止,我使用Google Calender并使用wget链接的每日public ".ics"进行个人备份。

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

是否可以使用一个caldav / carddav下载所有wgetcurl数据?

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

提前致谢。

修改

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

您可以在https://gist.github.com/ahemwe/a2eaae4d56ac85969cf2找到它。

3 个答案:

答案 0 :(得分:12)

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

这不是专门的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并提取数据(不是很难)。

注意:虽然普通标准,但有些服务器拒绝或只是省略内容(lame!file bug reports; - )。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我尝试了一个无法接受的答案。但是,借助CalDAV日历提供程序,我可以使用

检索所有日历文件。
wget -c -r -l 1 -nc --user='[myuser]' --password='[mypassword]' --accept=ics '[url]'

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

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