كيفية تنزيل جميع بيانات caldav وcarddav الخاصة بي باستخدام wget/curl واحد؟

StackOverflow https://stackoverflow.com//questions/23030628

  •  21-12-2019
  •  | 
  •  

سؤال

حتى الآن، اعتدت Google Calender وأقوم بعمل نسخة احتياطية شخصية لي يوميًا wget التابع public ".ics"وصلة.

الآن أريد التبديل إلى خدمة جديدة لديها فقط caldavوصول.

هل هناك إمكانية لتحميل كل ما عندي caldav و carddav البيانات مع واحد wget / curl?

يجب أن تمنحني هذه البيانات التي تم تنزيلها إمكانية عمل نسخة احتياطية من البيانات المفقودة.

شكرا لك مقدما.

يحرر

لقد قمت بإنشاء ملف php بسيط جدًا يعمل بالطريقة التي شرحتها.لا أعرف ما إذا كانت هذه الطريقة تعمل مع مقدمي خدمات مختلفين، ولكن بالنسبة إلى mailbox.org، فهي تعمل بشكل جيد.

يمكنك العثور عليها هنا https://Gist.github.com/ahemwe/a2eaae4d56ac85969cf2.

هل كانت مفيدة؟

المحلول

يرجى أن تكون أكثر تحديدًا، ما هي الخدمة/الخادم الجديد الذي تستخدمه؟

هذا ليس 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 واستخراج البيانات (ليس بالأمر الصعب).

ملحوظة:على الرغم من أنه معيار عادي، إلا أن بعض الخوادم ترفض ذلك أو تحذف المحتوى فقط (ضعيف!تقارير الأخطاء في الملفات ؛-).

نصائح أخرى

خصيصا للأشخاص الذين يستخدمون بايكال (>= 0.3.3؛ستكون الحلول الأخرى المستندة إلى Sabre/dav مماثلة)، يمكنك الانتقال مباشرة إلى

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

في المتصفح واحصل على واجهة html التي تسمح لك بتنزيل ملفات ics، وبالتالي تسمح لك أيضًا بالعثور على الروابط الصحيحة لتلك التي تستخدم مع curl/wget.

لقد جربت الإجابة المقبولة التي لم تنجح معي.ومع ذلك، باستخدام موفر تقويم CalDAV، يمكنني استرداد جميع ملفات التقويم باستخدام

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

أين [myuser] و [mypassword] هي ما تتوقعه و [url] هو نفس عنوان URL الذي تدخله في برنامج CalDAV العادي (كما هو محدد بواسطة مزود الخدمة الخاص بك).

يقوم الأمر بإنشاء دليل يحتوي على كافة ملفات ICS التي تمثل عناصر التقويم.يعمل أمر مماثل مع دفتر العناوين الخاص بي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top