2

Моя проблема в том, что проприетарная платформа SaaS, которую я разрабатываю на / для, предоставляет только файлы журналов через WebDav. Во время разработки эти файлы журнала могут стать довольно большими к концу дня (например, 200 Мб +), но они очень подробны и полезны при попытке отследить "общую ошибку".

Что происходит со мной сейчас, когда я просматриваю файл журнала, мне нужно загружать файл размером 200 Мб каждый раз (он автоматически не воссоздается, если я его удаляю :(), а это означает, что даже при хорошем соединении вам придется подождать 1 -2 мин для загружаемого файла.

Итак, еще раз актуальный вопрос: существует ли какой-либо инструмент, который может просматривать (например) метку времени файла каждые 5 секунд и просто загружать добавленный фрагмент (используя вычисленную разницу в размере).

2 ответа2

1
  • WebDAV является расширением HTTP, и в настоящее время доступные методы [ 1 ] не поддерживают его.

  • Вы можете посмотреть на альтернативные методы частичной передачи файлов по HTTP, такие как zsync, которые будут передавать только измененный контент.


1. zsync

Аннотация : Этот документ описывает концепцию zsync, новой программы передачи файлов, которая обеспечивает эффективную загрузку только содержимого файла, который еще не известен получателю. zsync использует алгоритм rsync, но реализован на стороне клиента, поэтому на сервере требуются только одноразовые предварительные вычисления, и для использования zsync не требуется никакого специального серверного программного обеспечения или нового протокола.

ОБНОВИТЬ:

Согласно алгоритму rsync:

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

  • В rsync сервер выполняет всю тяжелую работу, тогда как в zsync клиент, запрашивающий данные, выполняет всю тяжелую работу по применению скользящей контрольной суммы rsync и сравнению с загруженным списком контрольных сумм.

Из [ 4 ]

... Итак, мы делаем его сервером, который вычисляет контрольные суммы каждого отдельного блока. Поскольку для каждого блока данных требуется вычислить только одну контрольную сумму, а это не относится к конкретному клиенту, данные могут быть кэшированы. Мы можем сохранить эти данные в метафайл, и клиент запрашивает эти данные в качестве первого шага процесса. Этот метафайл может просто находиться по другому URL-адресу на том же или даже другом сервере.

Клиент zsync извлечет этот метафайл. Затем он просматривает уже имеющиеся данные, применяя скользящую контрольную сумму rsync и сравнивая с загруженным списком контрольных сумм. Таким образом, он идентифицирует данные в целевом файле, которые у него уже есть. Затем он запрашивает остальные данные с сервера. Так как он знает, какие данные ему нужны, он может просто использовать HTTP Range запросы для извлечения данных. ...

  • Таким образом, заголовки HTTP Range должны поддерживаться на стороне сервера.

2. Альтернативы zsync

  • Но если эти файлы журнала только растут и, следовательно, существующее содержимое не изменится, то заголовка HTTP Range будет достаточно. [ 2 ] [ 3 ]

Ссылка:

  1. http://www.webdav.org/specs/#dav
  2. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
  3. http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p5-range-latest.html#range.requests
  4. Теория Zsync
1

Если клиент является компьютером Windows, попробуйте следующее: сопоставьте общий ресурс webdav как сетевой диск и выполните команду tail для файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .