Как загрузить все мои данные caldav и carddav с помощью одного wget/curl?

До сих пор я использовал Google Calender и ежедневно делал резервную копию wget из public ".ics"Link.

Теперь я хочу переключиться на новую службу, у которой есть только caldavaccess.

Есть ли возможность загрузить все мои caldav и carddav данные одним wget/curl?

Эти загруженные данные должны дать мне возможность сделать резервную копию потерянных данных.

Заранее спасибо.

изменить

Я создал очень простой файл php, который работает так, как объяснил хм. Не знаю, работает ли этот способ для разных провайдеров, но для mailbox.org работает хорошо.

Вы можете найти его здесь https://gist.github.com/ahemwe/a2eaae4d56ac85969cf2.


person amw    schedule 12.04.2014    source источник
comment
Я не совсем уверен, поможет ли это! Но, пожалуйста, посмотрите следующую ссылку, которая может вам помочь. /2012/04/backup-owncloud-calendar-and-contacts   -  person Praveen Vinny    schedule 12.04.2014
comment
Большое спасибо за обзор и подсказку. Но я описываю загрузку только как ics-файл. Не через калдав/карддав.   -  person amw    schedule 13.04.2014
comment
Для этого вы можете использовать vdirsyncer, хотя это не совсем одна команда wget/curl.   -  person Markus Unterwaditzer    schedule 12.02.2015


Ответы (3)


Уточните, пожалуйста, какой новый сервис/сервер вы используете?

Это не конкретно 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.

Это даст вам объект XML со встроенным содержимым iCal/vCard. Чтобы восстановить его, вам нужно будет проанализировать XML и извлечь данные (несложно).

Примечание. Несмотря на то, что это обычный стандарт, некоторые серверы отвергают это или просто опускают содержимое (отчеты об ошибках файла lame! ;-).

person hnh    schedule 15.04.2014
comment
Большое спасибо, ххх. Я попробую ваш код curl, как только у меня будет время. Мой сервис — Mailbox.org. Я дам некоторую обратную связь на следующей неделе. - person amw; 18.04.2014
comment
Я пытаюсь загрузить свой календарь с веб-сервиса www.mailbox.org. - person amw; 26.04.2014
comment
Первая идея не работает. Я ничего не получаю или здесь ничего нет, извините. Кажется, вторая идея работает. - person amw; 26.04.2014
comment
Я получаю XML со следующей структурой: ‹D:multistatus› ‹D:response› ‹D:href›…Ссылка на файл ics‹/D:href› ‹D:propstat› много самых пустых тегов‹/D :propstat› ‹/D:Response› ‹D:response› Если я делаю запрос GET по ссылкам ics, я получаю информацию о своем календаре. Надеюсь, этих файлов достаточно для повторного импорта календаря. Вы имели в виду этот путь? @hh Большое спасибо. - person amw; 26.04.2014
comment
Запрос свойства «данные календаря» должен сразу же дать вам iCalendar в ответе (дополнительный GET не требуется). Но да, если это действительно не сработает (сообщите об ошибке поставщику) - вам нужно выполнить PROPFIND для получения URL-адресов, а затем либо N GET для извлечения элементов (или ОТЧЕТ о множественном получении с 'calendar-data ' — если сервер это поддерживает). - person hnh; 27.04.2014

Специально для людей, использующих Baïkal (>= 0.3.3; другие решения на основе Sabre/dav будут аналогичными), вы можете перейти прямо к

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

в браузере и получите html-интерфейс, который позволяет загружать файлы ics, а также позволяет находить нужные ссылки для использования с curl/wget.

person equaeghe    schedule 06.06.2016
comment
Я пробовал и не получил хорошего результата. Ссылка хорошая, но я не смог скачать свои данные. Есть ли более новая возможность? - person TravelTrader; 11.04.2019

Я попробовал принятый ответ, который не сработал для меня. Однако с помощью поставщика календаря CalDAV я могу получить все файлы календаря, используя

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

где [myuser] и [mypassword] — это то, что вы ожидаете, а [url] — тот же URL-адрес, который вы вводите в обычном программном обеспечении CalDAV (как указано вашим провайдером).

Команда создает каталог, содержащий все ICS-файлы, представляющие элементы календаря. Аналогичная команда работает для моей адресной книги.

person highsciguy    schedule 10.03.2019