Как еще скопировать чей-то папки из public.me.com с подобным wget инструментом?

Выполненные sudo с-E (сохраняют среду) опция (см. файл человека), или помещают JAVA_HOME в install.sh сценарий.

5
20.11.2011, 23:50
2 ответа

Тот сервер ясно выполняет частичную или поврежденную реализацию WebDAV. Обратите внимание, что необходимо соединиться с URL как https://public.me.com/ix/rudchenko, не нормальным URL https://public.me.com/rudchenko. Я судил несколько клиентов:

  • С нормальным загрузчиком HTTP, таким как wget или завихрение, я мог загрузить файл, зная его имя (например. wget https://public.me.com/ix/rudchenko/directory/filename), но не смог получить список каталогов.
  • FuseDAV, который был бы моим предпочтительным вариантом, не может справиться с некоторыми недостающими командами. Этому, по-видимому, удается перечислить корневой каталог (видимый в выводе от fusedav -D) но в конечном счете выполнения некоторый запрос, который возвращает “отказавший PROPFIND: 404 Не Найденный” и запирается.
  • Без обозначения даты испытывает недостаток в команде списка.
  • Труп работает хорошо, но испытывает недостаток в рекурсивной команде извлечения. Вы могли использовать его для получения списков, затем получить отдельные файлы как выше.

    Это не прекрасно, и конкретно в этом случае существует проблема: труп mget сбои для обработки args с подстановочными знаками, которые расширяются до имен файлов с пробелами.

  • Davfs2 работает очень хорошо. Я мог смонтировать, что доля и копирует файлы с него. Единственный недостаток - то, что это не файловая система FUSE, Вы должны базироваться для монтирования его или запись в /etc/fstab.
  • Основанный на FUSE wdfs-1.4.2-alt0. M51.1 работал очень хорошо в этом случае, не требуя никакого корня (только полномочия для /dev/fuse).

    mkdir viewRemote
    wdfs https://public.me.com/ix/rudchenko/ viewRemote
    rsync -a viewRemote/SEM*TO\ PRINT* ./
    fusermount -u viewRemote
    rmdir viewRemote
    

(Конечно, простое cp вместо rsync работал бы хорошо в этом примере; rsync был выбран просто для дополнительной диагностики о различии, когда мы обновим копию.)

(Кроме wdfs, я попробовал эти команды на Debian, сжимают систему. Ваш пробег может варьироваться.)

4
27.01.2020, 20:40

Существуют также некоторые специальные сценарии и инструмент (wget-warc) загружать содержание https://public.me.com/папки пользователя - https://github.com/ArchiveTeam/mobileme-grab/blob/master/dld-me-com.sh (и видеть содержание repo). (Найденный с помощью http://archiveteam.org/index.php?title=MobileMe#How_to_help_archiving.)

Внутренне, сценарий, кажется, составляет запросы WebDAV и использует затем ответы, например:

# step 1: download the list of files

if [[ "$domain" =~ "public.me.com" ]]
then

  # public.me.com has real WebDAV

  # PROPFIND with Depth: infinity lists all files
  echo -n "   - Discovering urls (XML)..."
  curl "https://public.me.com/ix/${username}/" \
       --silent \
       --request PROPFIND \
       --header "Content-Type: text/xml; charset=\"utf-8\"" \
       --header "Depth: infinity" \
       --data '<?xml version="1.0" encoding="utf-8"?><DAV:propfind xmlns:DAV="DAV:"><DAV:allprop/></DAV:propfind>' \
       --user-agent "${USER_AGENT}" \
     > "$userdir/webdav-feed.xml"
  result=$?
  if [ $result -ne 0 ]
  then
    echo " ERROR ($result)."
    exit 1
  fi
  echo " done."

  # grep for href, strip <D:href> and prepend https://public.me.com
  grep -o -E "<D:href>[^<]+" "$userdir/webdav-feed.xml" | cut -c 9- | awk '/[^\/]$/ { print "https://public.me.com" $1 }' > "$userdir/urls.txt"
  count=$( cat "$userdir/urls.txt" | wc -l )

elif 

Да, они также используют "https://public.me.com/ix/$ {имя пользователя} / ", отметьте"/ix /" инфикс в URL! Не нормальный URL - то же самое, поскольку Gilles обнаружен в его ответе.

1
27.01.2020, 20:40

Теги

Похожие вопросы